원본 이미지가 완전 알파입니까 아니면 투명 색/1 비트 알파 마스크입니까? 일반적으로 1 비트 알파 이미지는 배경색을 취할 때가 많으며, 종종 흰색이되고 그저 희미 해집니다. 흰색이 아닌 배경에 1 비트 알파 이미지를 그릴 경우 이미지가 정확히 표시됩니다.
1 비트 투명도 키를 사용하면 부분적으로 투명한 값을 양식 배경색과 혼합하는 '후광'이 발생합니다. 따라서 '후광'이 양식 핑크입니다 : 전체 알파 이미지에 비트 투명도를 사용하지 않는
public class Form1 : Form
{
Image newImage;
public Form1()
{
this.BackColor = Color.Pink;
this.ClientSize = new Size(168, 168);
this.TransparencyKey = this.BackColor;
newImage = Image.FromFile(Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.MyPictures),
"dot-mac-logo.png"));
}
protected override void OnPaint(PaintEventArgs e)
{
e.Graphics.DrawImage(newImage, 20, 20);
}
}
는
그래서 - 나는 C#에서 그것을 할 방법을 아주 잘 모르겠지만, C에서 당신은 것 오프 스크린 DC와 창 표면 사이에 알파 혼합을 지정하려면 UpdateLayeredWindow
MSDN 을 사용하십시오.
C# on this MSDN blog의 UpdateLayeredWindow
을 사용하는 샘플이 있습니다.
관심을 가져 주셔서 감사합니다. 대부분은 .ico 및 .png 파일입니다. 다음은 샘플입니다. http://icons.iconseeker.com/png/fullsize/cats-2/dot-mac-logo.png – CodeRush
그 png를 사용하면'e.Graphics.DrawImage (newImage, destRect1, x, y, 너비, 높이, 단위);'1 : 1 크기 조정을 사용하는 MSDN의 샘플 코드에 따라. 그러나 Windows 아이콘은 전통적으로 1 비트 마스크를 가졌으므로 새로운 형식이 아닌 이상 (XP 이후) 문제가 발생합니다. –
투명한 배경에 페인팅 하시겠습니까? – CodeRush