문제

사용 사례:사용자가 디자인 화면의 개체에 대한 글꼴 사용자 지정을 수행하고 이를 데이터 저장소에 로드/저장해야 합니다.즉.굵게, 기울임꼴, 크기, 글꼴 이름과 같은 설정을 유지해야 합니다.

글꼴 개체의 문자열 표현에서 다시 변환/읽기 위한 쉽고(신뢰할 수 있는) 메커니즘이 있습니까(이 경우 하나의 속성만 필요합니다)?아니면 사용자 정의 논리와 결합된 여러 속성이 올바른 옵션입니까?

도움이 되었습니까?

해결책

사용 유형 변환기:

Font font = new Font("Arial", 12, GraphicsUnit.Pixel);

TypeConverter converter = TypeDescriptor.GetConverter(typeof (Font));

string fontStr = converter.ConvertToInvariantString(font);

Font font2 = (Font) converter.ConvertFromString(fontStr);

Console.WriteLine(font.Name == font2.Name); // prints True

XML 직렬화를 사용하려면 Font 속성의 일부 하위 집합을 저장하는 Font 클래스 래퍼를 만들 수 있습니다.

참고(Gishu) - 유형 변환기에 직접 액세스하지 마십시오.대신 TypeDescriptor를 사용하여 적절한 변환기에 액세스하세요.매우 중요 :)

다른 팁

제가 작업 중인 프로젝트에서는 여러 속성을 사용했습니다.

이름, 크기, 스타일 및 단위를 구분하여 글꼴을 데이터베이스 테이블에 저장한 다음 해당 값을 유지합니다.

이러한 값을 검색한 후에는 요청 시 글꼴을 다시 만드는 것이 매우 쉽습니다.

이를 유지하려면 어떤 유형의 데이터 저장소가 필요합니까?파일에 유지될 수 있는 사용자 설정만 있는 경우 글꼴 개체를 바이너리 또는 xml의 설정 파일로 직렬화할 수 있습니다(구성 파일을 직접 편집할 수 있도록 하려는 경우).직렬화 네임스페이스(System.Xml.Serialization 및 System.Runtime.Serialization)는 사용자 지정 코드를 작성하지 않고도 이 작업을 수행할 수 있는 모든 도구를 제공합니다.

XML 직렬화에 대한 MSDN 사이트: .Net Framework의 XML 직렬화

[편집] 따라서 분명히 글꼴 개체는 직렬화가 가능하지 않습니다.앗 미안 해요.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top