【】Top

【】VB.NET
【】VB6.0

【】メールマガジンの購読
【】メールマガジンの解除






【】会社概要

【】お問い合わせ


姉妹サイト「バーチャルコネクション!」はこちらです。

姉妹サイト「七福神のメールでビンゴ!」はこちらです。

アイネットマコト

●24時間365日の安心をあなたにAT-LINK専用サーバ・サービスお勧めのサーバです。






描画したグラフィックの再描画を行う

.NET でも、描画したグラフィックの再描画を行うことが可能です。

この機能を使えば、簡単に、
グラフィックスを永続化させることができるようになります。

Paint イベントにグラフィックス メソッドを記述します。


フォームに次の様なコードを記述します


-----------VB.NETコーディングここから-------------------


1.フォームに、ラベルコントロール、
    テキストボックスコントロール、
    ボタンコントロール、
    ピクチャボックスコントロールを配置します。
    下記は、デフォルトのオブジェクトの名前と配置を示しています。

    ┏━━━━━━━━━━━━━━━━━━━━┓
    ┃Label1                                  ┃
    ┗━━━━━━━━━━━━━━━━━━━━┛
    ┏━━━━━━━━━━━━━━┓┏━━━━┓
    ┃TextBox1                    ┃┃Button1 ┃
    ┗━━━━━━━━━━━━━━┛┗━━━━┛
    ┏━━━━━━━━━━━━━━━━━━━━┓
    ┃PictureBox1                             ┃
    ┃                                        ┃
    ┃                                        ┃
    ┃                                        ┃
    ┃                                        ┃
    ┃                                        ┃
    ┃                                        ┃
    ┃                                        ┃
    ┃                                        ┃
    ┗━━━━━━━━━━━━━━━━━━━━┛


2.ラベルコントロール
    Label1 text プロパティに
    「画像のURLを入力して下さい」と記述します。

    さらに、ボタンコントロールの
    Button1 text プロパティに「取得」と記述します。

    さらに、テキストコントロールの
    TextBox1 text プロパティを空白にします。

  ※説明用のためです。必須ではありません。

    ┏━━━━━━━━━━━━━━━━━━━━┓
    ┃画像のURLを入力して下さい               ┃
    ┗━━━━━━━━━━━━━━━━━━━━┛
    ┏━━━━━━━━━━━━━━┓┏━━━━┓
    ┃                            ┃┃取得    ┃
    ┗━━━━━━━━━━━━━━┛┗━━━━┛
    ┏━━━━━━━━━━━━━━━━━━━━┓
    ┃PictureBox1                             ┃
    ┃                                        ┃
    ┃                                        ┃
    ┃                                        ┃
    ┃                                        ┃
    ┃                                        ┃
    ┃                                        ┃
    ┃                                        ┃
    ┃                                        ┃
    ┗━━━━━━━━━━━━━━━━━━━━┛


3.ボタンコントロールをダブルクリックして、
    ボタンのクリックイベントの編集を開始して、
    フォームの宣言部に、次のコードを記述します。

    Imports System.Net
    Imports System.IO


  さらに、次のコードを記述します。


    Dim MyBitmap2 As Bitmap


    Private Sub Button1_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button1.Click

        Dim strUrl As String = TextBox1.Text
        If strUrl.Length = 0 Then
            MsgBox("画像までのURLを入力してください")
            Exit Sub
        End If

        Dim WebC As WebClient = New WebClient
        Dim MyStream As Stream = WebC.OpenRead(strUrl)

        Dim MyBitmap As Bitmap
        Dim Gr As Graphics

        MyBitmap = New Bitmap(MyStream)
        MyStream.Close()

        Dim intWidth As Integer = MyBitmap.Width / 2
        Dim intHeight As Integer = MyBitmap.Height / 2
        MyBitmap2 = New Bitmap(MyBitmap, intWidth, intHeight)



        '描画先のピクチャーボックスに、
        'グラフィックオブジェクトを作成()
        Gr = PictureBox1.CreateGraphics()

        '画像を表示
        Gr.DrawImage(MyBitmap2, 0, 0)

        'グラフィックオブジェクト解放
        Gr.Dispose()
        MyBitmap.Dispose()

    End Sub






    Private Sub PictureBox1_Paint(ByVal sender As Object, _
    ByVal e As System.Windows.Forms.PaintEventArgs) _
    Handles PictureBox1.Paint

        Try
            If Not IsNothing(MyBitmap2) Then

                '画像を表示
                e.Graphics.DrawImage(MyBitmap2, 0, 0)
            End If

        Catch ex As Exception

        End Try

    End Sub



    Private Sub Form1_Closing(ByVal sender As Object, _
    ByVal e As System.ComponentModel.CancelEventArgs) _
    Handles MyBase.Closing
        MyBitmap2.Dispose()
    End Sub




4.ビルドして実行します。

5.フォームに表示された
    テキストボックスに、
   「 http://anetm.com/m/images/head2.gif 」と入力します。

6.フォームに表示された
    「取得」ボタンを押すと、取得した画像が
    50% に縮小されて描画されます。

7.フォームの上に、別のアプリケーション
   (例えばエクスプローラ)の
    ウィンドウを上に重ねてフォームを見えなくしてみます。

8.再度、フォームを手前に表示します。

9.フォームの再描画が行われ、
    ドローした画像も再描画が行われることが確認できます。


-----------VB.NETコーディングここまで-------------------

Visual Basic 6.0では、
AutoRedraw プロパティでもリドローが実現可能でしたが、
.NET では、AutoRedraw プロパティはなくなっています。

.NET では、
Paint をオーバーライドして、描画コードを記述することで、
リドローによって描画を持続することが出来ます。




 

http://anetm.com/dev/d.cgi?SC=DTDTL&o=Oew

Copyright(c)2001-2004 Ai Net Makoto 記事・情報の無断転載を禁止します。

「これがほしかった!厳選サンプルツール集」の注意点
●当サイトはリンクフリーです。
2024/04/19(金)00:05 更新