不透明的图像/形状在Picturebox上

时间:2016-11-21 15:33:40

标签: c#

我对编程很陌生,所以,我真的很糟糕。我试图从多个来源阅读如何做以及如何绕过不透明度的限制,但我无法做任何事情。

我正在制作一个在图片框上覆盖圆圈的程序,此图片框会根据组合框中的选择更改背景图像。我完成了大部分的后台工作,(我只需要弄清楚在更改选项时处理堆叠的内存问题的最佳方法:|)但是光标让我完全卡住了。

基本上:我需要制作一个不透明/半透明的圆圈,以便我可以通过它看到背景图像。稍后,我需要能够用我的鼠标移动它,所以如果使用的方法也支持更新图片的位置,也将不胜感激。

目前我已经尝试过 -

This workaround tool

Microsoft's guide(如果我在pb更改图像后将图片框背景转换为位图,这会是最好的方法吗?)

这是我的Form1代码:

    public Form1()
    {
        InitializeComponent();

        MapList();
    }

    string apppath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);

    public void MapList()
    {


        cBox.Items.Add(
            new Map() {Name= "Cache" ,
                Image = System.IO.Path.Combine(apppath, "de_cache_radar.png")
            });
        cBox.Items.Add(
            new Map()
            {
                Name = "Cobblestone",
                Image = System.IO.Path.Combine(apppath, "de_cbble_radar.png")
            });
        cBox.Items.Add(
            new Map()
            {
                Name = "Dust2",
                Image = System.IO.Path.Combine(apppath, "de_dust2_radar.png")
            });
        cBox.Items.Add(
            new Map()
            {
                Name = "Inferno",
                Image = System.IO.Path.Combine(apppath, "de_inferno_radar.png")
            });
        cBox.Items.Add(
            new Map()
            {
                Name = "Mirage",
                Image = System.IO.Path.Combine(apppath, "de_mirage_radar.png")
            });
        cBox.Items.Add(
            new Map()
            {
                Name = "Nuke",
                Image = System.IO.Path.Combine(apppath, "de_nuke_radar.png")
            });
        cBox.Items.Add(
            new Map()
            {
                Name = "Overpass",
                Image = System.IO.Path.Combine(apppath, "de_overpass_radar.png")
            });
        cBox.Items.Add(
            new Map()
            {
                Name = "Train",
                Image = System.IO.Path.Combine(apppath, "de_train_radar.png")
            });
    }


    private void cBox_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (cBox.SelectedIndex > -1)
        {
            var imageName = ((Map)cBox.SelectedItem).Image;
            var file = System.IO.Path.Combine(Application.StartupPath, apppath, imageName);
            pictureBox.Image = Image.FromFile(file);
        }
    }
}

哦,我的Map类:

public class Map
{
    public string Name { get; set; }
    public string Image { get; set; }
    public override string ToString()
    {
        return this.Name;
    }
}

很抱歉,如果我完全错了,或者答案非常明显,我自学了一切,因此我并不真正理解位图和图片盒(我应该有一本好书)拿起来为VS更好地处理这些图形?)

谢谢!

0 个答案:

没有答案