【问题标题】:Transparent PictureBox over Panel面板上的透明图片框
【发布时间】: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


【解决方案1】:

在主窗体中唯一必须做的就是将 PictureBox 的控件与 Panel 中的控件一起添加。

Staff.Controls.Add(this.MNote);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-08
    • 1970-01-01
    • 2018-05-28
    • 1970-01-01
    • 1970-01-01
    • 2014-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多