首先,我制作了一个具有拖放功能的桌面 AIR 应用程序来查看磁贴图像,但由于一些问题,我尝试在 C# 中制作相同的内容。你认为什么是更好的选择?(我知道这个小程序的性能不是问题,但我的意思是两者的难度和复杂性)
我正在构建一个简单的 TileViewer,因此在 openFileDialog 中选择了一张图片并将其设置为 Form 的平铺 BackgroundImage。
我的问题是:
我一直在使用计时器(interval = 500)来重新加载图像,所以如果我在 Photoshop 中编辑图像,TileViewer 将自动重新加载更新的图像(因为我将其保存在 Photoshop 中)。
但问题是 Photoshop 没有这样做的权限,因为图像是在其他程序(我的 TileViewer)中打开的
我删除了计时器并制作了一个刷新按钮。但它是同样的问题。
我想制作一个位图数据的副本,但后来我得到一个错误,我没有足够的内存用于 32px x 32px img。
我的代码:
private string FileName;
public Form1() {
InitializeComponent();
FileName = "";
}
// OPEN FILE btn
private void button1_Click( object sender, EventArgs e ) {
openFileDialog1.Filter = "PNG Files (*.png)|*.png|JPG Files (*.jpg)|*.jpg";
if(openFileDialog1.ShowDialog() == DialogResult.OK) {
button2.Enabled = true;
FileName = openFileDialog1.FileName;
setImage();
}
}
// REFRESH btn
private void button2_Click( object sender, EventArgs e ) {
if( FileName != "" ) {
setImage();
}
}
private void setImage() {
Bitmap tempImg = new Bitmap( FileName );
Rectangle rect = new Rectangle(0, 0, 100, 100);
PixelFormat format = tempImg.PixelFormat;
this.BackgroundImage = new Bitmap( FileName ).Clone( rect, format );
}
所以小伙伴们,如果你有任何建议或解决方案,请告诉我。