0
배경 : WinForms 및 .NET4.0을 사용하는 레거시 맵 응용 프로그램에서 작업 중입니다. 레이블, 도로, 아이콘은 지형과 별도로 "오버레이"라는 별도의 비트 맵에 그려집니다. 오버레이의 배경은 투명하며 나중에 지형 비트 맵 위에 그려집니다.Graphics.DrawString() (.NET 4.0)을 사용하여 페인팅하는 동안 배경에 영향을받는 문자 스타일
문제는 텍스트를 비트 맵에 그림을 그릴 때 텍스트 스타일이 비트 맵 배경의 영향을 받는다는 것입니다.
레이블 "수도원"과 "흰색"을 살펴보십시오 : 난 당신에게 오버레이의 예 그림을 보여줍니다. "흰색"은 완전히 투명한 배경에 칠해졌으며 이제는 굵게 써진 것처럼 보입니다. "대 수도원"의 "ab"는 일반 텍스트가 아이콘 위에 칠해진 것처럼 보입니다.
var bmp = new Bitmap(mapControl.Width, mapControl.Height);
using (var graphics = Graphics.FromImage(bmp))
{
var labelRectangle = GetLabelBorders();
Color labelBackgroundColor = Color.FromArgb(128, Color.FromName("LightPink"));
SolidBrush sb = new SolidBrush(labelBackgroundColor);
graphics.FillRectangle(sb, labelRectangle);
graphics.DrawRectangle(WhitePen, labelRectangle .X, labelRectangle .Y,
labelRectangle .Width - 1, labelRectangle .Height - 1);
Font timesnew8 = new Font("TimesNew", 8);
StringFormat strForm = new StringFormat();
strForm.Alignment = StringAlignment.Near;
graphics.DrawString("abbey", timesnew8, Brushes.Black, labelRectangle , strForm);
}
내가 찾고 텍스트 - 굵은하지 원하는 : 여기
레이블을 생성하는 코드입니다. 어떻게해야합니까?
텍스트를 반올림하기 위해 smoothingmode를 사용해 보셨습니까? 그 또는 TextRenderingHint? http://msdn.microsoft.com/en-us/library/9t6sa8s9.aspx 또는 http://msdn.microsoft.com/en-us/library/system.drawing.graphics.textrenderinghint.aspx – Tom
그림은 어디에 있습니까? 에서? 더블 버퍼링이 활성화되어 있습니까? – leppie
@leppie : 현실을 더 반영하도록 코드를 업데이트했습니다. 더블 버퍼링이 없으며 로컬 Bitmap 객체에 페인팅을하고 있습니다. – user256890