これは、asp.net の特定の場所に保存するだけです。Microsoft Word などの標準的なプログラムで [名前を付けて保存] を使用するのと同様です。
私が探している GUI は、asp.net の FileUpload コントロールの GUI とまったく同じです。ただし、FileUpload コントロールでは、実行中のプログラムにファイルをアップロードすることしかできません。プログラム内で作成されたファイルを保存する場所を選択するだけです。
私はすでに次のコードを書いています:
protected void btnSaveYourBuild_Click(object sender, EventArgs e)
{
// セクション A
System.Drawing.Image chosenGoldenLineTop = GetSystemDrawingImage(ImageGoldenLineTop);
System.Drawing.Image chosenGoldenLineBottom = GetSystemDrawingImage(ImageGoldenLineBottom);
System.Drawing.Image chosenImageTop = GetSystemDrawingImage(ImageTop);
System.Drawing.Image chosenImageJungle = GetSystemDrawingImage(ImageJungle);
System.Drawing.Image chosenImageMid = GetSystemDrawingImage(ImageMid);
System.Drawing.Image chosenImageAdc = GetSystemDrawingImage(ImageAdc);
System.Drawing.Image chosenImageSupp = GetSystemDrawingImage(ImageSupp);
// セクション B
Bitmap B = new Bitmap(chosenGoldenLineBottom.Width, chosenGoldenLineBottom.Height + chosenImageSupp.Height + chosenGoldenLineTop.Height);
using (Graphics g = Graphics.FromImage(B))
{
g.DrawImage(chosenGoldenLineTop, 0, 0, 1540, 49);
g.DrawImage(chosenImageTop, 0, chosenGoldenLineTop.Height, 308, 560);
g.DrawImage(chosenImageJungle, chosenImageTop.Width, chosenGoldenLineTop.Height, 308, 560);
g.DrawImage(chosenImageMid, chosenImageTop.Width + chosenImageJungle.Width, chosenGoldenLineTop.Height, 308, 560);
g.DrawImage(chosenImageAdc, chosenImageTop.Width + chosenImageJungle.Width + chosenImageMid.Width, chosenGoldenLineTop.Height, 308, 560);
g.DrawImage(chosenImageSupp, chosenImageTop.Width + chosenImageJungle.Width + chosenImageMid.Width + chosenImageAdc.Width, chosenGoldenLineTop.Height, 308, 560);
g.DrawImage(chosenGoldenLineBottom, 0, chosenGoldenLineTop.Height + chosenImageTop.Height, 1540, 53);
}
// セクション C
B.Save(System.IO.Path.Combine(
Environment.GetFolderPath(
Environment.SpecialFolder.Desktop),
"Team Awesome v3" + ".png"));
// Saves on the desktop
}
簡単にするために、コードの大きなバッチを A、B、C の 3 つのセクションに分割しました。簡単に言うと、セクション A には 7 つの画像があります。セクション B では、7 つの画像を 1 つの大きな画像に結合します。セクション C は、画像をデスクトップに保存します。
私はすでにそれでとても満足しています。しかし、少なくとも私はそうするでしょう。
今、私が見つけようとしている解決策は、セクション C を置き換えることができる、ユーザーが選択した場所に 1 つの大きな画像を保存できるコントロールです。
また
特定の場所を選択し、セクション C の 1 つの引数のみを置き換えて、1 つ大きな画像を保存できるパスを返すことができるコントロール。
私はさまざまなことを試しましたが、最初の試みでは効果がなかったり失敗したりしました。FileDialog システム (asp.net では使用できません) や、ファイルをプログラムにアップロードするだけで、その逆はしない FileUpload コントロールなどです。
FileUpload コントロールからパスを取得して、ファイルを保存しているという錯覚をユーザーに与える方法に注意してください。ただし、FileUpload コントロールに FileName 編集を挿入するだけでは (通常の場合と同様に、保存する前に)、実際にディレクトリを選択することもできず、ファイルを選択してパス内の FileName を切り取る必要があります。ユーザーに混乱を招く経験をもたらす。
解決策を見つけるのに約 17 時間費やしましたが、失敗しました。私たちを手伝ってくれますか?