그래픽 객체에 32 비트 투명도로 텍스트를 그려야합니다. 내가 시도 할 때, 나는 결과에서 검은 색으로 만 나타납니다.그래픽 객체에 반투명 텍스트를 그리는 방법은 무엇입니까?
같은 반투명 색상으로 선을 그리려면 완벽하게 작동합니다.
는이 코드가 있습니다
lBitmap As New Bitmap(32, 32, PixelFormat.Format32bppArgb)
lGraphic As Graphics = Graphics.FromImage(lBitmap)
lGraphic.SmoothingMode = SmoothingMode.HighQuality
lGraphic.InterpolationMode = InterpolationMode.HighQualityBicubic
lGraphic.Clear(Color.Transparent)
Dim lTestTransparencyColor As Color = Color.FromArgb(100, 140, 0, 230)
lGraphic.DrawLine(New Pen(lTestTransparencyColor), 0, 0, 32, 32)
lBrush As New SolidBrush(lTestTransparencyColor)
lGraphic.DrawString("A", New Font("Arial", 12), lBrush, 0, 0)
Dim lImage As Image = lBitmap
lImage.Save("D:\Test.png", Imaging.ImageFormat.Png)
라인이 제대로 적용되는 투명하게 그려을하지만, 텍스트 투명도와 검은 색입니다.
편집 :
그래픽에 배경 오브젝트로 내가 단색을 설정하는 경우는, 다음 텍스트 투명성이 작동하지만, 나는 그것이 단색 배경 단지 투명하지, PNG 파일 결과에 진정으로 투명해야 이미지의 색상.
lGraphic.Clear(Color.FromArgb(100, 0, 255, 0))
나는 그것이 SolidBrush는 투명도를 지원하지 않는다 될 수있다 생각했다,하지만 난 미리 정의 된 브러시가 투명라는 이름의 발견 (Brushes.Transparent
)했다 :이 같은 배경으로 부분적으로 투명한 색을 설정하면 이 문제가 발생합니다 SolidBrush
내가 디버그에서 보았을 때. 나는 텍스트를 그릴 때 Brushes.Transparent
을 브러시로 사용하려고 시도했지만, 전혀 표시하지 못했습니다. 즉, 내가 일할 수있는 완전한 투명성을 얻지 만, 부분적인 투명성은 얻지 못한다는 것을 의미합니다.
이 설정에 대해 알려 주신 데 대해 감사드립니다. 대신 TextRenderingHint.AntiAlias를 사용했습니다. 그렇다면 반투명 안티 앨리어싱으로 완벽한 결과를 얻었습니다! – awe