더 나은 이미지 표시를 지원하는 확장 된 RichTextBox를 만들었습니다. 간단히 말해서 : RTF 입력에서 텍스트 기반 이미지 자리 표시자를 파싱하고 빈 단락으로 공백을 띄워 이미지 높이를 바꾸고 텍스트 위의 페인트 이벤트에 공백 내부의 이미지를 그립니다.RichTextBox space issue
이제 문제는 간격이 잘못되었다는 것입니다. 나는 다음과 같은 공식으로 트윕 계산 :
size.Width = (int)((1440 * size.Width)/graphics.DpiX);
size.Height = (int)((1440 * size.Height)/graphics.DpiY);
을 graphics
내 RichTextBox
에서하고 size
이미지 크기입니다. DPI 값이 96이므로 기본적으로 twips = 15 * pixels
입니다.
RTF 제어 단어 \sbN
과 \saN
을 트윕 값으로 계산해 보았습니다. (디버거로 제어했을 때, 그 값은 예상대로입니다). 나는 또한 PFM_SPACEBEFORE
과 PFM_SPACEAFTER
과 interop을 사용했다.
두 가지 방법 모두 동일한 결과를 얻습니다. 문제는 RichTextBox 내부의 실제 공간이 너무 크다는 것입니다. 계산 된 트윕 값에 0.75를 곱하면됩니다. 그러나 나는 정말로 이것이 일어나지 않는 이유를 알지 못합니다.
나의 첫 번째 생각은 인자 72/96 (PPI/DPI)이 0.75였습니다. 그러나 이것은 나를 위해 말이되지 않습니다.
추가 공간은 이미지 높이에 비례하여 증가합니다. 따라서 공간은 작은 아이콘 (예 : 24 픽셀 높이)에 대해서는 거의 알아볼 수 없습니다. 그러나 더 큰 이미지 (예 : 320 픽셀 높이)의 경우 추가 공간이 큽니다.
몇 가지 아이디어가 있습니까? RichTextBox 컨트롤의 버그입니까?
명확히하기 : 나는 System.Windows.Forms.RichTextBox
을 기본 클래스로 사용했습니다.