最初に、タイル画像を表示するためのドラッグアンドドロップ機能を備えたデスクトップAIRアプリを作成しましたが、いくつかの問題のため、C#で同じものを作成しようとしました。何がより良い選択だと思いますか?(私はこの小さなプログラムのパフォーマンスが問題ではないことを知っていますが、私は両方の難しさと複雑さを意味します)
単純なTileViewerを作成していたので、画像がopenFileDialogで選択され、フォームのタイル化されたBackgroundImageとして設定されます。
私の問題は:
タイマー(間隔= 500)を使用して画像をリロードしているので、フォトショップで画像を編集すると、TileViewerは更新された画像を自動的にリロードします(フォトショップに保存すると)。
しかし、問題は、フォトショップにそうするための権限がないことです。画像は他のプログラム(私のTileViewer)で開かれます。
タイマーを外して、代わりに更新ボタンを作成しました。しかし、それは同じ問題です。
ビットマップデータのコピーを作成しようと思いましたが、32px x32pximgに十分なメモリがないというエラーが表示されます。
私のコード:
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 );
}
ですから、何か提案や解決策があれば、私に知らせてください。