728x90
반응형
고프로 히어로8 액션캠 SPJB1 블랙 + 듀얼배터리 충전기 킷 탐사 황사마스크 KF80, 일반 대형, 개별포장, 20개입 디붐 타임박스 스마트 LED 올인원 블루투스스피커, TIMEBOX, 심플블랙 디붐 디투 블루투스 스피커, 단일상품, 포레스트그린 바디굿 3단밴드 손목보호대, 1개

        // EUC-KR

        private string EuckrEncoding(string data)

        {

            System.Text.Encoding euckr = System.Text.Encoding.GetEncoding(51949);

            byte[] euckrBytes = euckr.GetBytes(data);


            string urlEncodingText = "";

            foreach (byte b in euckrBytes)

            {

                string addText = Convert.ToString(b, 16);

                urlEncodingText = urlEncodingText + "%" + addText;

            }

            return Convert.ToString(urlEncodingText);

        }


        // UTF-8

        private string Utf8Encoding(string data)

        {

            System.Text.Encoding utf8 = System.Text.Encoding.UTF8;

            byte[] utf8Bytes = utf8.GetBytes(data);


            string urlEncodingText = "";

            foreach (byte b in utf8Bytes)

            {

                string addText = Convert.ToString(b, 16);

                urlEncodingText = urlEncodingText + "%" + addText;

            }

            return Convert.ToString(urlEncodingText);

        }


728x90
반응형
728x90
반응형

 

Web 파이러터 처리시 한글을 % 가 포함된 문자열로 인코딩하여 보내할 경우가 있는데

이를 처리하기위해선 System.Web 의 HttpUtility 를 사용해야한다.

참조 추가에서 어셈블리의 System.Web 를 체크하면 된다.

 

 

사용방법은 아래와 같다.

 

 

// 인코딩하는 방법

string encodeName = HttpUtility.UrlEncode("테스트", Encoding.UTF8);

 

// 인코딩한 내용을 다시 디코딩하는 방법

string originalName = HttpUtility.UrlDecode(encodeName, Encoding.UTF8);

 

 

(encodeName  의 값은 "%ed%85%8c%ec%8a%a4%ed%8a%b8")

 

 

 

728x90
반응형
728x90
반응형

HSV : hue saturation value의 약어. 색상(H), 채도(S), 명도(V) 를 의미한다.

 

아래 메서드를 통해 RGB,HSV 간에 변환을 할수 있다.

 

        /// <summary>

        /// Color 를 HSV 값으로 반환합니다.

        /// </summary>

        /// <param name="color">Color</param>

        /// <param name="hue">hue</param>

        /// <param name="saturation">saturation</param>

        /// <param name="value">value</param>

        public static void ColorToHSV(Color color, out double hue, out double saturation, out double value)

        {

            int max = Math.Max(color.R, Math.Max(color.G, color.B));

            int min = Math.Min(color.R, Math.Min(color.G, color.B));

 

            hue = color.GetHue();

            saturation = (max == 0) ? 0 : 1d - (1d * min / max);

            value = max / 255d;

        }

 

        /// <summary>

        /// HSV 값을 RGB 로 반환합니다.

        /// </summary>

        /// <param name="hue">hue</param>

        /// <param name="saturation">saturation</param>

        /// <param name="value">value</param>

        /// <returns>Color</returns>

        public static Color ColorFromHSV(double hue, double saturation, double value)

        {

            int hi = Convert.ToInt32(Math.Floor(hue / 60)) % 6;

            double f = hue / 60 - Math.Floor(hue / 60);

 

            value = value * 255;

            int v = Convert.ToInt32(value);

            int p = Convert.ToInt32(value * (1 - saturation));

            int q = Convert.ToInt32(value * (1 - f * saturation));

            int t = Convert.ToInt32(value * (1 - (1 - f) * saturation));

 

            if (hi == 0)      return Color.FromArgb(255, v, t, p);

            else if (hi == 1) return Color.FromArgb(255, q, v, p);

            else if (hi == 2) return Color.FromArgb(255, p, v, t);

            else if (hi == 3) return Color.FromArgb(255, p, q, v);

            else if (hi == 4) return Color.FromArgb(255, t, p, v);

            else              return Color.FromArgb(255, v, p, q);

        }

 

 

(테스트)

 

            Color blueColor = Color.LightBlue;

 

            ColorToHSV(blueColor, out double hue, out double saturation, out double value);

 

            Color convertColor =  ColorFromHSV(hue, saturation, value);

 

            if (blueColor.ToArgb() == convertColor.ToArgb())

            {

 

            }

 

 

값을 보면 같은 값으로 다시 변환되서 나온걸 확인 할수 있다.

 

 

 

728x90
반응형
728x90
반응형
Dictionary<string, string> myDictionary = new Dictionary<string, string>();
myDictionary.Add("a", "x");
myDictionary.Add("b", "y");
int i = Array.IndexOf(myDictionary.Keys.ToArray(), "a");
int j = Array.IndexOf(myDictionary.Values.ToArray(), "y");


728x90
반응형
728x90
반응형

https://github.com/BerndK/SvgToXaml

728x90
반응형
728x90
반응형

// 2020 년 의 2월 일수를 가져옵니다. (결과:29)

int days = DateTime.DaysInMonth(2020, 2);

728x90
반응형
728x90
반응형

배경에 따라서 글자가 잘보이게 하기 위해

색을 흰색이나 검은색으로 지정하게 되는데

자동으로 글자색을 지정할수 있도록 하는 코드입니다.

 

 

        public TestForm()

        {

            InitializeComponent();

 

            Color backColor = Color.Blue;

 

            bool isBlack = .222 * backColor.R + .707 * backColor.G + .071 * backColor.B > 128;

 

            Color fontColor = isBlack ? Color.Black : Color.White;

 

            this.BackColor = backColor;

            this.colorLabel.ForeColor = fontColor;

        }

 

 

 

728x90
반응형
728x90
반응형

사진의 날짜 정보를 이용하여 해당 사진이 최신에 찍혔는지 여부를

알아내야 할 일이 있어서 코드를 찾아봤고 코드는 아래와 같습니다.

참고로 날짜 이외에 정보도 알아낼수 있습니다. (BitmapMetadata)

 

* 참조를 추가해야함(어셈블리에서 PresentationCore, WindowsBase 추가)

 

 

using System;

using System.IO;

using System.Windows.Forms;

using System.Windows.Media.Imaging;

 

namespace WindowsFormsApp

{

    public partial class TestForm : Form

    {

        public TestForm()

        {

            InitializeComponent();

 

            string fileName = "";

 

            // 선택된 파일의 FileStream 을 생성합니다.

            using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read))

            {

                // 선택된 파일의 FileStream 를 활용하여 BitmapSource 를 생성합니다.

                BitmapSource img = BitmapFrame.Create(fs);

 

                // BitmapSource 의 Metadata 정보를 가져옵니다.

                BitmapMetadata md = (BitmapMetadata)img.Metadata;

 

                // BitmapMetadata 에서 시간 정보를 가져옵니다.

                DateTime datetime = DateTime.Parse(md.DateTaken);

            }

        }

    }

}

 

 

728x90
반응형
728x90
반응형

 

        string filePath = "그림파일위치";

 

        /// <summary>

        /// 그림판을 실행합니다.

        /// </summary>

        private void RunMSPaint()

        {

            ProcessStartInfo startInfo = new ProcessStartInfo(this.filePath);

            startInfo.Verb = "edit";

 

            Process.Start(startInfo);

        }

 

728x90
반응형
728x90
반응형

프로젝트에서 라이브러리를 참조하거나 프로젝트를 참조하게 되면

덕지덕지 dll 들이 Release 폴더에 생기는데요

이를 하나의  exe 파일로 만드는 방법입니다.

 

Nuget 에서 Costura.Fody, Fody 를 설치하고 빌드하면 끝.

(Costura.Fody 를 설치하면 Fody 는 자동으로 설치 됩니다.)

 

 

 

설치하기 전

 

 

설치 후

 

 

Newtonsoft.Json.dll 이 사라진걸 확인할 수 있습니다.

 

728x90
반응형

+ Recent posts