본문 바로가기

C#

Access BitmapSource Pixel Data (WIC Image Hack) Introduction WPF에서 파일로부터 불러온 이미지의 픽셀데이터에 접근하고자 할 경우 아래와 같이 CopyPixels를 통해 이미지에 포함된 픽셀 값들을 복사하는 방법을 사용합니다. CopyPixels는 이름에서도 알 수 있듯이 이미지에 있는 픽셀데이터를 복사하는데요, 이 때문에 데이터의 용도가 단순한 읽기 전용이거나 업데이트를 위한 용도일 경우에는 불필요한 메모리와 퍼포먼스를 요구하게 되므로 효율적이지 못합니다. byte[] Pixels = new byte[CopyPixelsSource.PixelHeight * CopyPixelsSource.BackBufferStride]; OriginalSource.CopyPixels(Pixels, CopyPixelsSource.BackBufferStride,.. 더보기
WPF Window Resizer(Attached Property) Introduction WPF를 이용해 Application을 개발 할 때 기본 Window모양이 아닌 임의의 디자인의 Window로 구현해야 하는 경우가 있습니다. 이때 아래 그림과 같이 WindowStyle 속성과 AllowsTransparency 속성을 이용해 기본 Frame을 나타나지 않도록 구현 할 수 있는데요. WindowStyle을 None으로 설정할 경우 기본 제목 표시줄을 사라지지만 윈도우의 테두리에 크기를 변경할 때 사용하는 테두리가 남아 있는데요. 이를 제거하기 위해서 AllowsTransparency 속성을 True 지정하면 이 테두리가 사라지게 됩니다. 그런데, 한가지 문제점은 AllowsTransparency 속성이 True일 경우에는 기본적으로 마우스를 이용해 크기조절이 불가능.. 더보기
C# Reverse String Format Using Regex Introduction 이번시간에는 정규표현식을 이용해 String Format이 적용된 텍스트에서 값을 추출하는 방법에 대해 소개합니다. 아래는 이번시간에 구현하게될 내용의 스크린캡쳐 화면 입니다. About StringFormat .Net에서 StringFormat은 입력된 텍스트를 일정한 형식(Format)에 맞춰 텍스트를 변환해주는것을 의미하며 String.Format이나 Console.WriteLine등에서 사용합니다. Composite formatting이라고도 부르는 StringFormat은 일반적으로 "고정문자열"과 "서식"으로 이루어지는데 아래 코드를 보면, 고정 텍스트는 "Name = " 과 ", "Hours = "입니다. string myName = "Kuru"; String.Form.. 더보기
File Encryption & Decryption Helper Introduction 어플리케이션을 개발할때 간혹 파일을 암호화 해야 하는 경우가 있습니다. 이번시간에는 파일을 암호화하는 방법중에서 가장 널리 이용되고 있는 RSA와 AES(DES)를 이용해 파일을 암호화 하고 복호화 하는 방법에 대해 소개합니다. 아래는 이번시간에 구현하게될 샘플 동영상입니다. 위 동영상의 시연 순서를 설명드리면 아래와 같습니다. 1. Generate Key버튼을 이용해 RSA키를 생성한다. (입력된 파일 명으로 개인키와 공개키가 생성) 2. Encrypt File버튼을 이용해 선택한 파일을 암호화한다. (선택한 파일과 동일한 폴더에 ".Encrypt" 확장자의 암호화된 파일이 생성) 3. Decrypt File버튼을 이용해 선택한 파일을 복호화한다. (선택한 파일과 동일한 폴더에 .. 더보기
ScrollViewer Zoom And Panning Behavior Introduction 일반적으로 Image Viewer 등과 같이 화면에 출력해야할 내용이 화면크기보다 클 경우 ScrollViewer를 이용해 내용을 스크롤할 수 있도록 구현을 하는데요, 이번시간에는 화면을 스크롤하기 위해서 스크롤바를 조작하지 않고 간단한 마우스조작으로 컨텐츠를 직접 드래그하는 방식으로 View를 조절하고 확대 축소할 수 있는 기능을 구현해보았습니다. 아래는 이번시간에 구현한 결과물 영상입니다. Create ZoomAndPanning Behavior Zoom 또는 Panning의 경우 자주 사용될 수 있는 기능이기 때문에 재사용을 용이하게 하기 위해서 Behavior의 형태로 작성했습니다. ZoomAndPanning Behavior의 기본적인 구성은 와래와 같습니다. public c.. 더보기