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

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

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

Re[6]: pictureBox上にlabelを表示するには


(過去ログ 94 を表示中)

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

■56194 / inTopicNo.1)  pictureBox上にlabelを表示するには
  
□投稿者/ クロ (13回)-(2011/01/04(Tue) 16:58:26)

分類:[ASP.NET (C#)] 

いつもお世話になっております。
pictureBox上に設定画面で設定した色でグラデーションをかけ、その上に
labelを表示したいのですが
labelを表示するとその背景がpictureboxのグラデーションの
縮小された形になっています。
labelの背景を透過させたいのですが
どうしたらいいのか教えて下さい。

labelの代わりに
g.DrawStringで文字を書けば、解決はしますが
時計を表示させたいのでtimerを使って毎秒時間を変える処理をしているのですが
毎秒Refresh()をすると毎秒ちらつくのでpictureBox上にlabelを表示したいのです。



private void Form2_Shown(object sender, EventArgs e)
{
label1.BackColor = Color.Transparent;
label.Parent = pictureBox;
}


private void pictureBox_Paint(object sender, PaintEventArgs e)
{
// グラデーション処理
Graphics g = pictureBox1.CreateGraphics();
LinearGradientBrush gb = new LinearGradientBrush(g.VisibleClipBounds, Color.DarkBlue, Color.Wheat, LinearGradientMode.Vertical);

g.FillRectangle(gb, g.VisibleClipBounds);

// Refresh();
gb.Dispose();
}

void timer1_Tick(object sender, EventArgs e)
{
label1.Text = DateTime.Now.ToString();
}
引用返信 編集キー/
■56196 / inTopicNo.2)  Re[1]: pictureBox上にlabelを表示するには
□投稿者/ やじゅ (1805回)-(2011/01/04(Tue) 18:36:09)
やじゅ さんの Web サイト
No56194 (クロ さん) に返信

分類:[ASP.NET (C#)] ?
本当にASP.NETですか?

> private void pictureBox_Paint(object sender, PaintEventArgs e)
pictureBox_Paintの描画をやめて、PaintBox.Imageプロパティ設定されたイメージに直接描画してみては
どうでしょうか
http://dobon.net/vb/dotnet/graphics/pictureboximageanddrawimage.html
引用返信 編集キー/
■56201 / inTopicNo.3)  Re[2]: pictureBox上にlabelを表示するには
□投稿者/ クロ (14回)-(2011/01/04(Tue) 20:52:55)
No56196 (やじゅ さん) に返信
> ■No56194 (クロ さん) に返信
>
> 分類:[ASP.NET (C#)] ?
> 本当にASP.NETですか?
>
>> private void pictureBox_Paint(object sender, PaintEventArgs e)
> pictureBox_Paintの描画をやめて、PaintBox.Imageプロパティ設定されたイメージに直接描画してみては
> どうでしょうか
> http://dobon.net/vb/dotnet/graphics/pictureboximageanddrawimage.html

すいません。分類を間違えていました。
C#です。

string型のイメージも考えたのですが毎秒更新しているので
ちらつき防止処理を行っても完全にちらつきが取り除けない状態である点と
毎秒Refresh()を行うとメモリを食うみたいです。

labelならRefresh()をする必要が無いみたいなので
出来れば、labelで表示したいのですが方法はないでしょうか?

最悪の場合は、秒単位を分単位に買えて、やじゅ様のおっしゃった方法を
考えてはいますが他に方法がありましたらご回答お願いいたします。

引用返信 編集キー/
■56207 / inTopicNo.4)  Re[3]: pictureBox上にlabelを表示するには
□投稿者/ やじゅ (1806回)-(2011/01/04(Tue) 23:12:39)
やじゅ さんの Web サイト
No56201 (クロ さん) に返信
> labelならRefresh()をする必要が無いみたいなので
> 出来れば、labelで表示したいのですが方法はないでしょうか?

私の提案の言葉の表現が悪かったみたいです、labelコントロールはそのままで
PictureBox側をImageプロパティを使用した方法にしてみてはどうですか ってことです。

引用返信 編集キー/
■56210 / inTopicNo.5)  Re[4]: pictureBox上にlabelを表示するには
□投稿者/ クロ (15回)-(2011/01/04(Tue) 23:48:28)
No56207 (やじゅ さん) に返信
> ■No56201 (クロ さん) に返信
>>labelならRefresh()をする必要が無いみたいなので
>>出来れば、labelで表示したいのですが方法はないでしょうか?
>
> 私の提案の言葉の表現が悪かったみたいです、labelコントロールはそのままで
> PictureBox側をImageプロパティを使用した方法にしてみてはどうですか ってことです。
>

やじゅ様、何度も回答ありがとうございます。
意味をまた取り違えたら申し訳ないので念のため、確認しますが
グラデーションの画像をpictureBoxに設定して、上からlabelを表示するって方法で合っているでしょうか?。
その方法も考えましたが、設定画面で設定した色でグラデーションをかける処理ができなくなって
しまうのでちょっと厳しいです。



引用返信 編集キー/
■56212 / inTopicNo.6)  Re[5]: pictureBox上にlabelを表示するには
□投稿者/ クロ (16回)-(2011/01/05(Wed) 00:22:36)
やじゅ様、回答ありがとうございます。
また勘違いをしてしまいました。

Bitmap bmp = new Bitmap(100,100);
g = Graphics.FromImage(bmp);

LinearGradientBrush gb = new LinearGradientBrush(g.VisibleClipBounds, Color.DarkBlue, Color.Wheat, LinearGradientMode.Vertical);
g.FillRectangle(gb, g.VisibleClipBounds);
pictureBox.Image = bmp;

で、グラデーションのImageを作成して、pictureBoxのImageプロパティに設定する事が出来ました。
これで処理も軽く、ちらつきも無くす事ができ、助かりました。

本当にありがとうございました。
解決済み
引用返信 編集キー/
■56213 / inTopicNo.7)  Re[5]: pictureBox上にlabelを表示するには
□投稿者/ やじゅ (1807回)-(2011/01/05(Wed) 00:25:06)
やじゅ さんの Web サイト
No56210 (クロ さん) に返信
> グラデーションの画像をpictureBoxに設定して、上からlabelを表示するって方法で合っているでしょうか?。
> その方法も考えましたが、設定画面で設定した色でグラデーションをかける処理ができなくなって
> しまうのでちょっと厳しいです。

リアルタイムで色を変えるというなら使えないでしょうが…

そうでないなら、提示したリンク先のように設定画面で設定した色のグラデーションをメモリ上のBitmapに作成してセットから
imageプロパティにセットすればいいかなと思いました。


引用返信 編集キー/
■56214 / inTopicNo.8)  Re[6]: pictureBox上にlabelを表示するには
□投稿者/ やじゅ (1808回)-(2011/01/05(Wed) 00:27:40)
やじゅ さんの Web サイト
2011/01/05(Wed) 00:27:58 編集(投稿者)

No56212 (クロ さん) に返信
> で、グラデーションのImageを作成して、pictureBoxのImageプロパティに設定する事が出来ました。
> これで処理も軽く、ちらつきも無くす事ができ、助かりました。

よかったですね、回答を書いている間に解決済みになってしまいましたので、解決済みにしておきます。

解決済み
引用返信 編集キー/


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

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -