C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

c# picturebpx 透過

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■91062 / inTopicNo.1)  c# picturebpx 透過
  
□投稿者/ ryu (14回)-(2019/05/23(Thu) 16:10:16)

分類:[C#] 

windouws formでアプリを作っておりform1とform2があります。
form1で画像を2枚表示して、form2でその2枚の画像の片方を透かして表示したいです。

form1 pictureBox1 pictureBox2 button1 button2 button3
form2 pictureBox1 pictureBox2

public partial class Form1 : Form
{

public Form3()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
pictureBox1.ImageLocation = openFileDialog1.FileName;
}
}

private void button2_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
pictureBox2.ImageLocation = openFileDialog1.FileName;
}
}

private void button3_Click(object sender, EventArgs e)
{
Form5 fm4 = new Form5();
fm4.Show();
fm4.pictureBox1.Image = this.pictureBox1.Image;
fm4.pictureBox2.Image = this.pictureBox2.Image;

}

}

上記まではできているのですがform2ができません
インターネットで調べてはみましたがいまいちわからず
どなたかご教授よろしくお願いします。

引用返信 編集キー/
■91064 / inTopicNo.2)  Re[1]: c# picturebpx 透過
□投稿者/ Azulean (1059回)-(2019/05/23(Thu) 22:13:15)
2019/05/23(Thu) 22:14:59 編集(投稿者)

「透かす」という目的は結構ですが、透かした後、後ろに何が見えるのかが共有されていないので助言が難しいものですね。

(例)可能性があるもの
・Form2 の背景色(デフォルトだと灰色?)
・PictureBox の他方が重ねられていて、それが重なって見える
・Form2 自体も貫通し、デスクトップや Form1 が見える

あと、Form1 なのか、Form3 なのか、Form2 なのか、Form5 なのか、fm4 なのか読み手を悩ませるコードになっています。
きちんとビルドが成功するソースコードをそのまま貼り付けるようにしましょう。
(今のコードは Form1 というクラスに Form2 というコンストラクタがいてエラーになります)

// 2 枚の絵を重ね合わせ、片方を透かすなら DrawImage で実現した方が良いと思う。
// http://dobon.net/vb/dotnet/graphics/hadeinimage.html
引用返信 編集キー/
■91068 / inTopicNo.3)  Re[2]: c# picturebpx 透過
□投稿者/ ryu (16回)-(2019/05/24(Fri) 09:51:28)
No91064 (Azulean さん) に返信■No91064 (Azulean さん) に返信
返信ありがとうございます
ご指摘ありがとうございます
訂正したコードを下記に記します

public partial class Form1 : Form
{

public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
pictureBox1.ImageLocation = openFileDialog1.FileName;
}
}

private void button2_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
pictureBox2.ImageLocation = openFileDialog1.FileName;
}
}

private void button3_Click(object sender, EventArgs e)
{
Form2 fm2 = new Form2();
fm2.Show();
fm2.pictureBox1.Image = this.pictureBox1.Image;
fm2.pictureBox2.Image = this.pictureBox2.Image;

}

}

片方のpicturBox1を透かしてpictureBox2の前に置き比較したいです。
パスを設定せずにform1で開いた画像を表示したいのでdrawImageだと画像を読み込むところがうまくいきません。
教えていただければ幸いですよろしくお願いします。

引用返信 編集キー/
■91072 / inTopicNo.4)  Re[3]: c# picturebpx 透過
□投稿者/ Azulean (1060回)-(2019/05/24(Fri) 22:34:03)
No91068 (ryu さん) に返信
> 片方のpicturBox1を透かしてpictureBox2の前に置き比較したいです。

pictureBox1.Image に設定されている画像はαつき(半透明)になっているのですか?
そうでないなら、画像自体を加工するか、PictureBox をやめて自作のコントロールにしない限りは半透明にならないので、その制約条件では「できない」という答えになります。

> パスを設定せずにform1で開いた画像を表示したいのでdrawImageだと画像を読み込むところがうまくいきません。

よくわからないのですが、Form2 の pictureBox1.Image に画像を設定できる以上は「その画像を使って DrawImage できる」はずですが、何か誤解されていませんか?
引用返信 編集キー/
■91084 / inTopicNo.5)  Re[4]: c# picturebpx 透過
□投稿者/ Jitta (442回)-(2019/05/27(Mon) 09:02:48)
透けると親が見えます。pictureBox1.Parent を pictureBox2 にしてみてください。
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ