2011-03-01 2 views
0

내 앞의 질문 (link)Windows Form에 글꼴 질문 2 부

계속 내가 작성자의 글꼴에 새 사용자 컨트롤의 글꼴을 지정하려면. 내가해야할 일 a) :

newControl = new MyControl(...); 
...  
newControl.Font = this.Font; 

또는이 b)?

newControl = new MyControl(...); 
... 
newControl.Font = (Font)this.Font.Clone(); 

대답은 창조자의 글꼴 배치받을 경우), 어떤 새 사용자 컨트롤의 글꼴이 일어날 경우 (예를 들어, 윈도우 사용자에 의해 폐쇄)?

감사합니다,

길버트

당신이 일정한 모양을 시행하려는 경우
+0

도움이되지 않는 대답은 빨아들입니다. –

답변

0

/등 모든 양식을 통해 폰트 X, 크기 Y, 색상 Z를 사용하여 모든 레이블로 ... 응용 프로그램에 대한 느낌, 레이블에서 내 자신의 클래스를 정의하고 이러한 요소를 읽기 전용 GETTER 호출 및 SETTER 없음으로 선언합니다. 이렇게하면 디자이너가 그러한 정보를 직렬화하는 것을 막을 수 있습니다. 따라서 루트 클래스에서 글꼴 정보를 한 번 변경하면 레이블이 사용되는 모든 위치가 글꼴에 적용됩니다. 변경 사항을 기반으로 정렬을 조정해야하지만 모든 시각적 요소는 그대로 유지됩니다. 또한 텍스트 상자, 콤보 박스, 멀티 라인 텍스트 상자, 버튼, 체크 박스로도이 작업을 수행했습니다. 훌륭하게 작동합니다. 따라서 주어진 요소를 읽기 전용으로 시작했을 때 응용 프로그램을 빌드하면 읽기 전용 속성에 대해 많은 오류가 발생합니다. 그래서, 나는 빠르게 스캔하여 디자이너의 직렬화 된 요소를 삭제하고 정리할 것입니다. 매력처럼 작동합니다. 이것이 당신이하고자하는 것이라면, 나는 그것을 구현 한 방법에 대해 더 많은 샘플 코드를 제공 할 수 있습니다.

0

Font 클래스는 실제로 두 가지를 캡슐화 :

  • 텍스트 스타일

  • 해당 스타일

텍스트 스타일로 텍스트를 그릴 수 있습니다

  • GDI 핸들 Font 클래스에 의해 캡슐화 된 클래스는 불변입니다. 핸들은 "처분 불변"입니다. 즉, 생성 된 것과는 다른 GDI 핸들을 캡슐화하지 않지만, 일단 Font이 삭제되면 모든 글꼴 핸들을 캡슐화하지 않게됩니다 (실제로 쓸모 없지만, 그 시점에서).

    프레임 워크에서 컨트롤의 Font 속성을 설정하면이 두 가지를 잡기 위해가 발생합니다

    • Font에 의해 단독으로을 사용하는 속성을 설정하는 데 사용되는 Font 객체의 ID 속성 가져 오기 도구

    • 컨트롤이 고유 한 Font 개체를 만드는 데 사용할 텍스트 스타일입니다. 각 프레임 워크 제어가 본래의 Font 속성을 설정하는 데 사용되는 Font 인스턴스를 복제해야합니다

    때문에, 다른 컨트롤의 Font 속성을 설정하는 데 사용하기 전에 글꼴을 복제하는 사용자 코드가 필요 일반적으로 없습니다.