C#を勉強しているのですが、GUIを作り初めて描画処理で分からない所があり、質問させて頂きます。
基本クラスの方で「Hello, world!」という文字列をDrawStringで表示させる事は出来たのですが、それを基本クラスを継承した派生クラスのメソッドで行うと何も表示されないんです。
以下が試したコードです。
//基本クラスSample1
using System;
using System.Drawing;
using System.Windows.Forms;
public class Sample1 : Form
{
protected Bitmap image;
protected Graphics g;
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Sample2 s = new Sample2();
s.helloworld();
e.Graphics.DrawImage(image, 0, 0);
}
public Sample1()
{
SetStyle(ControlStyles.DoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint, true);
image = new Bitmap(600, 400);
g = Graphics.FromImage(image);
}
static void Main()
{
Form form = new Sample1();
form.Text = "sample";
form.ClientSize = new Size(600, 400);
form.BackColor = Color.FromArgb(0xff, 0xff, 0xff);
Application.Run(form);
}
}
//派生クラスSample2
using System;
using System.Drawing;
using System.Windows.Forms;
public class Sample2 : Sample1
{
Brush brush = new SolidBrush(Color.Black);
public void helloworld()
{
g.DrawString("Hello, world!", this.Font, brush, 10, 10);
}
}
なぜ表示されないのか分かる方いらしたら、ご教授願えないでしょうか。是非お願いします。
No.1ベストアンサー
- 回答日時:
DrawImageで描画しようとしているのが 何も描画されていない Sample1.Imageだからだと思います
Sample2 s = new Sample2();
s.helloworld();
で描画されてるのは s.image であり呼び出し元のForm.imageに描画されるわけではありません
OnPaintの中を
base.OnPaint(e);
Sample2 s = new Sample2();
s.helloworld();
// this.imageでは無く s.imageを描画
e.Graphics.DrawImage(s.image, 0, 0);
といった具合に変更しましょう
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# Windows Formアプリからコンソールを呼び出して文字を出力させたい 8 2023/05/09 10:53
- C言語・C++・C# PC画面を録画するプログラムでdllの読み込みエラー 1 2023/04/22 08:31
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- Java java final 1 2022/06/10 22:49
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JAVAでの背景画像表示
-
C# リストビューの特定のセルの...
-
このプログラミングをどう組み...
-
VB.NETのSendMessageを教えてく...
-
Labelコントロールの背景をグラ...
-
Canvas等の図形を移動する時,直...
-
Androidで画像の中で指定した範...
-
VB.NET フォーム上に描いたグ...
-
変数名の付け方
-
エクセルVBAで、条件に一致する...
-
「タイプ初期化子が例外をスロ...
-
Java初級 引数に適用できません
-
インスタンス参照でアクセスで...
-
グローバルIPとプライベートIP...
-
パワーポイントのVBAでテキスト...
-
複数の変数を宣言する時、同時...
-
コマンドプロンプト実行後に画...
-
private static という変数の修飾
-
VB.netでメソッドからコントロ...
-
C# 点の描き方をおしえてくだ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.NET フォーム上に描いたグ...
-
C# DataGridView のCellPaintin...
-
VB.NETのSendMessageを教えてく...
-
canvasで表示されてる画像を1...
-
Exception occurred during eve...
-
requestanimationframeを一斉に...
-
Labelコントロールの背景をグラ...
-
SwingとEDT(イベントディスパッ...
-
C# リストビューの特定のセルの...
-
MFCでMSペイントみたいなツー...
-
画面のちらつきの原因が知りた...
-
JAVAでの背景画像表示
-
Androidで画像の中で指定した範...
-
このプログラミングをどう組み...
-
描画してもウィンドウをリサイ...
-
JavaScriptで直線を描画したい
-
SwingのpaintComponent(...
-
BMP画像を画像処理して連続に表...
-
Java 15パズルを作ったのですが...
-
<JFreeChart> 縦軸の値の間隔を...
おすすめ情報