【发布时间】:2012-12-13 02:33:57
【问题描述】:
我有一个问题,因为我希望将一个 PictureBox 放在一个绘制为钢琴五线谱的面板上。我遇到的问题是在使用.Transparent 时,它只是给了我一个不正确的控制颜色表单,它有一个带有线条的五线谱。我能做什么?
编辑:
如何编写代码才能将所有内容都变成一个面板,汉斯?代码:汉斯,如何编写代码才能使所有内容都成为面板?
代码:
class MusicNote : PictureBox
{
public string path = "ImagesName\\";
public string noteShape = "";
public int time = 0;
public MusicNote(int iTime, string iNoteShape, int x, int y) : base()
{
noteShape = iNoteShape;
time = iTime;
Enabled = true;
Location = new Point(x, y);
Size = new Size(35, 35);
Image NoteBmp = Image.FromFile(path + noteShape + ".png");
Image = NoteBmp;
}
protected override void OnPaint(PaintEventArgs pe)
{
base.OnPaint(pe);
}
}
【问题讨论】:
-
使用的图片保存为透明背景,需要的MusicNote就在那里。也保存为PNG格式
-
这通常不是正确的解决方案,不包括透明度问题。当每个音符都是图片框时,您的程序将开始吸吮严重的泥浆。改用面板的 Paint 事件,使用 e.Graphics.DrawImage() 来绘制笔记。
-
我同意汉斯的观点。此外,实际上很难在 WinForms 中使控件透明(它可以完成,但很痛苦,而且结果通常不是最佳的)。您能否发布一些您想要的图形类型的示例,以及您需要做什么来捕获用户输入等。也许我们可以为您提供一些您可能想要在 Paint 事件等中使用的代码的更具体示例. 您可能还想研究一下 WPF,它通常对透明控件和更好的图形合成有更好的支持。
-
请汉斯再次检查问题..
标签: c# label transparency opacity picturebox