我对编程很陌生,所以,我真的很糟糕。我试图从多个来源阅读如何做以及如何绕过不透明度的限制,但我无法做任何事情。
我正在制作一个在图片框上覆盖圆圈的程序,此图片框会根据组合框中的选择更改背景图像。我完成了大部分的后台工作,(我只需要弄清楚在更改选项时处理堆叠的内存问题的最佳方法:|)但是光标让我完全卡住了。
基本上:我需要制作一个不透明/半透明的圆圈,以便我可以通过它看到背景图像。稍后,我需要能够用我的鼠标移动它,所以如果使用的方法也支持更新图片的位置,也将不胜感激。
目前我已经尝试过 -
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更好地处理这些图形?)
谢谢!