グラフィックス

Similar documents
VB.NET解説

ICONファイルフォーマット

ListViewコントロール

NotifyIconコントロール

VB 資料 電脳梁山泊烏賊塾 音声認識 System.Speech の利用 System.Speech に依るディクテーション ( 音声を文字列化 ).NetFramework3.0 以上 (Visual Studio 2010 以降 ) では 標準で System.Speech が用意されて居るの

ブロック パニック

Userコントロール

データアダプタ概要

ファイル操作-インターネットキャッシュ

ルーレットプログラム

パラパラ漫画

プロセス間通信

ブロック崩し風テニス

画像閲覧プログラム

アプリケーション

印刷

ファイル操作

ファイル監視

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略   

正規表現応用

DAOの利用

Microsoft Word 練習問題の解答.doc

プラグイン

神経衰弱ゲーム

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略   

スレッド操作 タイマー

Visual Studio2008 C# で JAN13 バーコードイメージを作成 xbase 言語をご利用の現場でバーコードの出力が必要なことが多々あります xbase 言語製品によっては 標準でバーコード描画機能が付加されているものもあるようで す C# では バーコードフォントを利用したりバー

3D回転体プログラム

ウィンドウ操作 応用

VB実用⑦ エクセル操作Ⅰ

神経衰弱ゲーム

パラパラ漫画

Visual Basic 資料 電脳梁山泊烏賊塾 コレクション初期化子 コレクション初期化子 初めに.NET 版の Visual Basic では 其れ迄の Visual Basic 6.0 とは異なり 下記の例の様に変数宣言の構文に 初期値を代入する式が書ける様に成った 其の際 1 の様に単一の値

Msako技術資料 

スライド 1

画像閲覧プログラム

データベースⅠ

平成 30 年度 プログラミング研修講座 岩手県立総合教育センター

Public Grid As ReverseGrid Public Position As Point ' 論理位置 Public Rectangle As Rectangle ' 物理位置 Status; 黒 白 なしの状態 Grid; オセロの盤面 Position; 盤面内の説明 Rectan

インベーダープログラム

VB実用⑬ 印刷Ⅲ(PrintFormメソッド)

グラフィックトレーニング 概要.NET のグラフィック描画は どんなことができるのでしょうか? グラフィックオブジェクトやグラフィック環境 概念を理解するためには クラスを使って馴れることが近道です 本 書に記載されているコードをカットアンドペーストして 一つ一つの機能を体験してください 前提 グラ

キー操作

MS Office オートメーション

Socketクラス

WebBrowserコントロール

VB.NET解説

構造体

Microsoft Excel操作

Bitmap for WinForms

メール送信

ドッグファイト

プロシード

バスケットボール

VB実用① データベースⅠ

モグラ叩きプログラム

チア ダンス

(Microsoft Word \203v\203\215\203O\203\211\203~\203\223\203O)

プラグイン

グラフィックス 目次

データベースⅠ

Oracle Lite Tutorial

占領双六ゲーム

エクセル詳細 アドイン

回文作成支援プログラム

Case 0 sqlcmdi.parameters("?tencode").value = Iidata(0) sqlcmdi.parameters("?tenname").value = Iidata(1) 内容を追加します sqlcmdi.executenonquery() Case Else

ハッシュテーブル

データベースプログラミング

データベース1

ファイル操作-バイナリファイル

3軸加速度センサーモジュール MM-2860 書込み済みマイコンプログラム通信コマンド概要

倉庫番

With sqlda sqlda に SelectCommand を追加.SelectCommand = New MySqlCommand() With.SelectCommand.CommandType = CommandType.Text.CommandText = "select * from

Secure iNetSuite for .NET 4.0Jの新仕様について

Microsoft Word -

プリンタ印字用 DLL 取扱説明書

相性占いプログラム

印刷

PYTHON 資料 電脳梁山泊烏賊塾 PYTHON 入門 ゲームプログラミング スプライト スプライト Pygame では pygame.sprite を用いる事でスプライトの管理 描画 衝突判定等を簡単に行う事が出来る 此れを利用してキャラクター操作に関する各種機能をスプライトクラスとして 1 個

構造体

Microsoft Word - VB.doc

ドライブは安全運転で in 滋賀♪

グラフィックス 目次

データベースプログラミング

3D回転体プログラム

かべうちテニス

Ver.1.1

回文作成支援プログラム

XML(DOMガイド)

正規表現

ICONファイルフォーマット

Prog2_15th

チャットプログラム

API 連携方式 外部 DLL の呼び出し宣言 外部 DLL の呼び出し宣言のサンプルコード (Microsoft Visual C#.NET の場合 ) プログラムコードの先頭で using System.Runtime.InteropServices; が必要 クラスの内部に以下のような外部 D

VB実用Ⅲ⑩ フリーデータベースⅡ

PowerPoint プレゼンテーション

VB実用⑩ エクセル操作Ⅳ

VB実用⑯ 印刷Ⅵ(Excel)


VFD256 サンプルプログラム

Transcription:

グラフィックス PictureBox の Image プロパティに関する良く有る勘違い PictureBox に画像を表示する方法と仕て PictureBox の Image プロパティを使う方法と Graphics の DrawImage メソッドを使う方法が有るが 此の 2 つの方法を混同し 正しく理解して居ない事が多い様で有る 例えば 下記に列挙する様な状況が 此れに該当する 1.PictureBox の Graphics オブジェクトを使って PictureBox に画像や図形を描画し 其のイメージを保存する為に PictureBox の Image プロパティの Save メソッドを呼び出すと エラーが発生するか 又は 期待する結果が得られない 2.PictureBox の Graphics オブジェクトを使って PictureBox に描画し 其のイメージを PictureBox の Image プロパティで取得しようとすると エラーが発生するか 又は 期待する結果が得られない 3.PictureBox の Image プロパティで画像を表示し 更に PictureBox の Graphics オブジェクトを使って PictureBox に図形を描画すると 他のウィンドウに隠れた後等で 描画した図形が消えて仕舞う 上記の様なトラブルは PictureBox の Graphics オブジェクトを使って描画した画像や図形が 其の PictureBox の Image プロパティに反映されると勘違いした事に起因する 併し 実際には PictureBox の Graphics オブジェクトに何を描画しようが 其れが PictureBox の Image プロパティに反映される事は無い 此の 2 つは 全く別の方法なので有る 詰まり 此の様なトラブルを解決する方法と仕ては 以下の孰れかに成る 1.PictureBox の Image プロパティを一切使用しない 2.PictureBox の Graphics オブジェクト (PictureBox.Paint イベントと PictureBox.CreateGraphics メソッド ) を一切使用しない PictureBox の Image プロパティを一切使用しない方法 先ずは 1 番目の方法で有る 此処では Graphics の DrawImage メソッドを使う方法を使ってピクチャボックスに画像や図形を描画して居る場合に ピクチャボックスに表示されて居るイメージを何の様にすれば保存出来るかと謂う問題に絞って説明する 此れには 色々な方法が考えられるが 其の一つは ピクチャボックスに表示する画像を Bitmap オブジェクトに描画し Paint イベントでは 其の Bitmap を描画すると謂う物が有る 以下に具体例を示す フォームにピクチャボックス PictureBox1 とボタン Button1 Button2 が有る物とし Button1 をクリックする事に依りピクチャボックスに図形を描画し Button2 をクリックする事に依り画像を保存して居る -1-

' PictureBox1 に表示する画像 Private BMP As Bitmap = Nothing Visual Basic ' フォームの Load イベントハンドラ Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles MyBase.Load ' 300x300 の大きさのイメージを BMP に設定 BMP = New Bitmap(300, 300) ' Button1 の Click イベントハンドラ Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles Button1.Click ' BMP に設定されて居るイメージの Graphics オブジェクトを取得 Dim G As Graphics = Graphics.FromImage(BMP) ' イメージに描画 G.FillPie(Brushes.Red, 50, 50, 200, 200, 0, 360) ' Graphics の破棄 G.Dispose( ) ' PictureBox の再描画 PictureBox1.Invalidate( ) ' Button2 の Click イベントハンドラ Private Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles Button2.Click ' ピクチャボックスに表示されて居る画像を保存 If Not (BMP Is Nothing) Then BMP.Save("C: test.png") End If ' PictureBox1 の Paint イベントハンドラ Private Sub PictureBox1_Paint(ByVal sender As Object, _ ByVal e As System.Windows.Forms.PaintEventArgs) _ Handles PictureBox1.Paint ' 画像の表示 If Not (BMP Is Nothing) Then e.graphics.drawimage(bmp, 0, 0, BMP.Width, BMP.Height) End If -2-

// PictureBox1 に表示する画像 private Bitmap bmp = null; C# // フォームの Load イベントハンドラ private void Form1_Load(object sender, System.EventArgs e) // 300x300 の大きさのイメージを bmp に設定 bmp = new Bitmap(300, 300); // Button1 の Click イベントハンドラ private void Button1_Click(object sender, System.EventArgs e) // bmp に設定されて居るイメージの Graphics オブジェクトを取得 Graphics g = Graphics.FromImage(bmp); // イメージに描画 g.fillpie(brushes.red, 50, 50, 200, 200, 0, 360); // Graphics を破棄する g.dispose( ); // PictureBox の再描画 PictureBox1.Invalidate( ); // Button2 の Click イベントハンドラ private void Button2_Click(object sender, System.EventArgs e) // ピクチャボックスに表示されて居る画像を保存 if (bmp!= null) bmp.save("c: test.png"); // PictureBox1 の Paint イベントハンドラ private void PictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) // 画像を表示する if (bmp!= null) e.graphics.drawimage(bmp, 0, 0, bmp.width, bmp.height); -3-

PictureBox の Graphics オブジェクトを一切使用しない方法 此の場合は PictureBox の Image プロパティに指定されたイメージに直接描画すれば良いと謂う事に成る 詰まり 下記の様に成る 1.PictureBox の Image プロパティに画像 ( イメージ ) が設定する 2.Graphics.FromImage メソッドに依り Image プロパティに設定したイメージの Graphics オブジェクトを取得し 此れを使って描画する 3.PictureBox の Invalidate メソッドに依り 再描画する 此の方法に依り ピクチャボックスに図形を描画するサンプルを 下記に示す 此処では フォームにピクチャボックス PictureBox1 とボタン Button1 が有る物とし Button1 をクリックすると PictureBox1 に赤い丸が表示される Visual Basic ' フォームの Load イベントハンドラ Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) _ Handles MyBase.Load ' 300x300 の大きさのイメージを Image プロパティに設定 PictureBox1.Image = New Bitmap(300, 300) ' Button1 の Click イベントハンドラ Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles Button1.Click ' Image プロパティに設定されて居るイメージの Graphics オブジェクトを取得 Dim G As Graphics = Graphics.FromImage(PictureBox1.Image) ' イメージに描画 G.FillPie(Brushes.Red, 50, 50, 200, 200, 0, 360) ' Graphics の破棄 G.Dispose( ) ' PictureBox の再描画 PictureBox1.Invalidate( ) C# // フォームの Load イベントハンドラ private void Form1_Load(object sender, System.EventArgs e) // 300x300 の大きさのイメージを Image プロパティに設定 PictureBox1.Image = new Bitmap(300, 300); -4-

// Button1 の Click イベントハンドラ private void Button1_Click(object sender, System.EventArgs e) // Image プロパティに設定されて居るイメージの Graphics オブジェクトを取得 Graphics g = Graphics.FromImage(PictureBox1.Image); // イメージに描画 g.fillpie(brushes.red, 50, 50, 200, 200, 0, 360); // Graphics の破棄 g.dispose( ); // PictureBox の再描画 PictureBox1.Invalidate( ); 前記の PictureBox の Image プロパティを一切使用しない方法 と同じ様なコードに成るが 此の方法の方がより簡単な分 融通は利かない -5-