부드럽게하고 렌더링하는 모든 조합을 사용하여 문자열을 그려 넣으려고 했으므로 텍스트 렌더러가 내 문자열을 그리는 것이 더 효과적 일 것이라고 생각했지만 틀렸다고 생각했습니다.ASP.NET TextRenderer.DrawText 끔찍한 텍스트 이미지
이 그것이 다워야 방법입니다 :
그리고 이것은처럼 보이는 방법입니다
Graphics objGraphics2 = Graphics.FromImage(objBitmap);
objGraphics2.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
objGraphics2.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
objGraphics2.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
objGraphics2.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBilinear;
Font textFont = new Font(textFontFamily, PxtoEm(textSize));
SolidBrush b = new SolidBrush(textColor);
TextRenderer.DrawText(objGraphics2, textValue, textFont, new Rectangle(0, 0, Width, Height), textColor);
: 여기
내 코드입니다
내입니다.방법이 잘못 되었나요?
public float PxtoEm(int px)
{
float em = (float)(Convert.ToDouble(Convert.ToDouble(px) * Convert.ToDouble(72)/Convert.ToDouble(objBitmap.HorizontalResolution)));
return em;
}
나는이 정말 끔찍하기 때문에 몇 가지 제안, 그것은 더 큰 글꼴 악화와 이미지가 축소되지 않습니다해야합니다.
UPDATE :
이이 글꼴 굴림 10px로해야되는 거지 어떻게입니다 :
는하지만 종류의 어떤 문자에 삭제됩니다 작은 글꼴 더 큰 글꼴 (. 즉, 20 픽셀) 작업을 당함이 Graphics.DrawString()
당신이 볼 수 있듯이 정말 좋지는 않지만 가까이에 있습니다. 나는 코드의 일부를 변경했고 더 큰 글꼴과 함께 더 나은 결과를 얻었다 :
이 받고있다 결과 :
이이 글꼴이 Arial 20 픽셀로해야되는 거지 어떻게입니다을
그리고 여기에 변경된 코드가 있습니다 (나는 방법을 삭제하고 직접 픽셀을 사용하고 TextRenderer.DrawText() 대신 Graphics.DrawString()으로 전환했습니다
누군가가 작은 텍스트 크기에 대해 다른 방법을 쓰고 위의 코드를 더 잘 작동하도록 멋지게 사용할 수있는 의견이 있으면 게시하고 시도해 보겠습니다.
업데이트 3 : 마지막으로 모든 것에 대한 솔루션을 찾았으며 솔루션은 간단했습니다. 투명한 배경을 사용하지 마십시오!
그리고 설정은 다음과 같습니다
objGraphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
objGraphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.ClearTypeGridFit; // <-- important!
objGraphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
objGraphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
objGraphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
objGraphics.TextContrast = 0;
가 여기에 흰색 배경에 이러한 설정으로 최종 이미지 : 제안과 응답에 대한
똑같은, 감사합니다.
이미지를 스트리밍하는 그래픽 형식은 무엇입니까? –
형식이 Png이고 배경이 투명합니다. 현재 TextRenderer를 사용할 때 변경된 사항은 없지만 Graphics.DrawString agian으로 돌아 가면 결과가 조금 좋아집니다. 내가 맞는 콤보를 얻을 때 나는 agian를 게시 할 것이다. – formatc
멋진데, GIF를 사용하려고하지 않았는지 확인하기 만하면 알파 채널을 잃어 버리고 비슷한 결과를 얻을 수 있습니다. –