본문 바로가기

Dev::DotNet

(54)
System.Drawing.Printing.PageSettings 의 PrintableArea 프로퍼티에 대한 문제 별도의 출력을 만들때 System.Drawing.Printing.PageSettings 객체를 통해서 이것저것 사용할 때가 있다. 문제는 그안에 PrintableArea 라는 RectangleF 를 반환하는 프로퍼티가 있다. 해당 값을 통해서 출력 가능영역을 계산할 수 있는데..... 대충 예를 들어서 이런식으로 쓴다고..하면 System.Drawing.Printing.PageSettings PageSettings = new System.Drawing.Printing.PageSettings();... float y = PrintableArea.Height;float x = PrintableArea.Width;float v1 = PrintableArea.Height - PrintableArea.Y;floa..
ProeprtyGrid 에서 사용자 Editor 생성 ProeprtyGrid 를 사용하다보면 특정 타입의 값에 대해서 사용자가 별도의 Editor 화면을 구성해서 제공해야 할 경우가 있다. ProeprtyGrid 에서 Bitmap, string[] 등 기본 타입에 대해서는 자체 Editor 화면을 제공하지만 그 타입에 값을 넣는 아주 기본적인 기능만을 제공한다. 그래서 System.Drawing.Design.UITypeEditor 를 상속받아 몇몇 메소드를 재정의 후 사용하면 되며(frmMyEditer 폼은 용도에 맞게 적당히....) Property 생성시 이런식으로 넣어주면 PropertyGrid 에서 해당 프로퍼티 항목 우측에 자그마한 버튼이 생기게 되고 버튼을 누르면 내가 생성한 Editor 화면이 뜨게 된다.
Property 속성 변경 PropertyGrid Control 를 사용할때 보통 [Category("위치")] [Description("현재 X 좌표입니다. 읽기 전용 입니다.")] [DisplayName("X")] [ReadOnly(true)] public int X{.....} 이런 방법으로 Property에 별도의 속성을 적용하여 PropertyGrid 에 적용되게 한다. 하다보면 각종 속성에 대해서 Dynamic 하게 속성값을 변경해야 하는 경우가 있다. >> Browsable PropertyDescriptor descriptor = TypeDescriptor.GetProperties(this.GetType())["PropertyName"];BrowsableAttribute attribute = (BrowsableAttr..
FlowDocument 의 Block 작업영역 구하기 FlowDocument 로 생성한 문서를 FixedDocument 로 변환할 때 페이지가 자동으로 나누어 지는데 나누어진 문서가 내가 원하는 대로 나누어 지지 않아서 FlowDocument 생성시 중간에 공백을 넣어볼려고 하다보니 FlowDocument 에 삽입된 Block 이 차지한 영역의 정보가 필요하게 되었다. System.Windows.Rect rect = block.ContentEnd.GetCharacterRect(LogicalDirection.Forward); 이렇게 하면 FlowDocument 에서 해당 Block 의 작업영역의 정보가 담긴 System.Windows.Rect 객체를 반환한다.
FarPoint.Win.TextRenderer.TextRenderer.DrawText 의 formatflags 속성 FarPoint.Win.TextRenderer.dll 에 TextRenderer.DrawText 라는 말그대로 DrawText 메소드가 있다. void TextRenderer.DrawText(Graphics g, string text, Font font, Rectangle bounds, Color foreColor, int formatFlags); 중요한건 저 formatFlags 라는 파라매터인데... 문자열을 그릴때 정렬에 대한 속성이 들어간다. 아직 명확한 정의를 찾지를 못해서... 그냥 노가다를 좀 해본 결과 0 -> Top/Left 1 -> Top/Center 2 -> Top/Right 3 -> Top/Center----------------------- 4 -> Center/Left 5 -> ..
Windows Version 구분 참고자료 : HOWTO: Visual C# .NET을 사용하여 Windows 버전 확인 이런것 저런거 하다보니... Windows XP 와 7 에서 다르게 동작하는 것이 있어서 OS Version 에 따라서 분기를 태우려고 하다보니...OS Version 을 구분해야 했다. MS 에서 제공해주는 위의 참고자료를 보면 아~주~ 잘 나와있다. 하지만 정작 내가 필요한 7 이 없어서....아주 약간의 사설을 더해 보았다. 앞으로 새로운 Windows 가 나오면 계속 추가를 해줘야하는 약간의 번거로움이 있다.
Spread 의 AllowCellOverflow 에 대해서.... Farpoint Spread 에 보면 AllowCellOverflow 라는 속성이 있다. AllowCellOverflow 는 셀의 내용이 길때 뒤쪽 셀의 내용이 없으면 뒤쪽까지 보여주는 아주 좋은 기능이다. ▶ fpSpread1.AllowCellOverflow = false; (기본) ▶ fpSpread1.AllowCellOverflow = true; 해당 기능은 Spread ActiveX Component 에서도 있는 기능이고 닷넷 윈폼 버전인 GrapeCity Spread for Windows Forms 에서도 당연히 동일하게 존재한다. 보통 AllowCellOverflow 속성을 디자이너에서 변경하고 작업하는 경우가 있다. 닷넷용 Spread 에서는 아실 분은 아시겠지만 화면에 Draw 하는 것이 ..
System.Environment.CurrentDirectory 의 경로 System.Environment 에는 아래와 같이 "현재 작업 디렉토리의 정규화된 경로" 를 가져오는 System.Environment.CurrentDirectory 가 있다. 나는 현재 실행되는 프로그램의 경로를 가져올 때 흔히 사용하였다. 사용하다 보니 약간의 문제가 있었다. 예시로 System.Environment.CurrentDirectory 를 메시지 박스로 출력하는 간단한 테스트 소스이다. 해당 프로그램을 바탕화면 ( C:\Users\Administrator\Desktop ) 놓고 실행해보았다. 당연히 아래와 같이 메시지가 보이게 된다. 그리고 다음으로는 cmd 창에서 C:\ 에서 실행해보았다. 결과는 이렇게 나왔다. System.Environment.CurrentDirectory 은 프로그..