tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルpictureboxの画像
記事No1291
投稿日: 2005/01/19(Wed) 13:59
投稿者mikiko
[OSのVer]:Windows xp   [VBのVer]:VB.NET  
tipsの画像の説明を読みましたがそれでもうまくいかないので教えてください
やりたいことは、pictureboxにbmpを表示し、その上に
マウスイベントで線を引き、そのimageをclipboardにはりつけたいのです。

----ビットマップファイルの読み込み
pic_01.Image = System.Drawing.Bitmap.FromFile("c:\image1.bmp")

---線を引く
-----以下の方法だと線は引けますが、画像が消えてしまいます。
Private Sub pic_01_MouseMove(ByVal sender As Object, ByVal e As
System.Windows.Forms.MouseEventArgs) Handles pic_01.MouseMove
        If "1" = Trim(lblPen.Text) Then
            pic_01.CreateGraphics.DrawLine(pen, Start_X, Start_Y, e.X, e.Y)
            lblPen.Text = "2"
        ElseIf "2" = Trim(lblPen.Text) Then
            pic_01.CreateGraphics.DrawLine(pen, a_X, a_Y, e.X, e.Y)
        End If
        a_X = e.X
        a_Y = e.Y
        g.Dispose()
    End Sub
-----画像が消えないように以下のように修正しましたが
Private Sub pic_01_MouseMove(ByVal sender As Object, ByVal e As
System.Windows.Forms.MouseEventArgs) Handles pic_01.MouseMove
        Dim g As Graphics = Graphics.FromImage(pic_01.Image)   ←ここでエラーになります
        If "1" = Trim(lblPen.Text) Then
            g.DrawLine(pen, Start_X, Start_Y, e.X, e.Y)
            lblPen.Text = "2"
        ElseIf "2" = Trim(lblPen.Text) Then
            g.DrawLine(pen, a_X, a_Y, e.X, e.Y)
        End If
        a_X = e.X
        a_Y = e.Y
        g.Dispose()
    End Sub

[ツリー表示へ]
タイトルRe: pictureboxの画像
記事No1293
投稿日: 2005/01/19(Wed) 14:45
投稿者aki
[OSのVer]:Windows    [VBのVer]:VB.NET  

エラーにはなりませんが?

----ビットマップファイルの読み込み
pic_01.Image = System.Drawing.Bitmap.FromFile("c:\image1.bmp")

はどこでされているのですか?

[ツリー表示へ]
タイトルRe^2: pictureboxの画像
記事No1294
投稿日: 2005/01/19(Wed) 15:27
投稿者mikiko
[OSのVer]:Windows    [VBのVer]:VB.NET  
> [OSのVer]:Windows    [VBのVer]:VB.NET  
>
> エラーにはなりませんが?
>
> ----ビットマップファイルの読み込み
> pic_01.Image = System.Drawing.Bitmap.FromFile("c:\image1.bmp")
>
> はどこでされているのですか?
コマンドボタンをクリックしたときに読み込んでいます。
そのあと、線を引くとの以下のエラーが発生します

'System.Exception' のハンドルされていない例外が system.drawing.dll で発生しました。

追加情報 : インデックス付きのピクセル形式をもつイメージから Graphics オブジェクトを作成するこ
とはで
きません。

[ツリー表示へ]
タイトルRe^3: pictureboxの画像
記事No1299
投稿日: 2005/01/19(Wed) 21:34
投稿者花ちゃん
下記コードをそのままペーストして試して見て下さい。
(但し、画像の上に線を引いてクリップボードに送るだけのテストサンプルですので
 ご覧になられ次第削除する場合があります)

------------------- コードの部分削除 ------------------------

--------------------------------------------------------------

# コードを投稿される場合上記のようにペーストすればすぐテストできる状態で
 投稿して頂けると解決が早いのですが。
 又、コードを投稿する場合は必ず、コード投稿モード(図表モード)で投稿してください
 自分の投稿したコードをご覧になって見て見る気になれますか。
 (後からでも、パスワードを入力して修正から修正できます。)

[ツリー表示へ]
タイトルRe^4: pictureboxの画像
記事No1301
投稿日: 2005/01/20(Thu) 11:18
投稿者mikiko
[OSのVer]:Windows    [VBのVer]:VB.NET  
>> # コードを投稿される場合上記のようにペーストすればすぐテストできる状態で
>  投稿して頂けると解決が早いのですが。
>  又、コードを投稿する場合は必ず、コード投稿モード(図表モード)で投稿してください
>  自分の投稿したコードをご覧になって見て見る気になれますか。
>  (後からでも、パスワードを入力して修正から修正できます。)
承知いたしました。

以下のコードで実行すると
「'System.Exception' のハンドルされていない例外が system.drawing.dll で発生しました。
追加情報 : インデックス付きのピクセル形式をもつイメージから Graphics オブジェクトを作成することはで
きません。」
のエラーが発生します。
原因は、bmpファイルのpixelformatがFormat1bppIndexedになっているからのようです。
bmpの保存形式を変更するとエラーは発生しません。
pixelformatを変えずに処理する方法はないでしょうか?

  Private Sub cmd_01_00_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)    
  Handles cmd_01_00.Click
        pic_01.Image = System.Drawing.Bitmap.FromFile("c:\test.bmp")
  End Sub
  
  Private Sub pic_01_MouseMove(ByVal sender As Object, ByVal e As  
  System.Windows.Forms.MouseEventArgs) Handles pic_01.MouseMove
        'bitmap読み込んでないときは抜ける
        If IsNothing(pic_01.Image) = True Then
            Exit Sub
        End If
        'マウスのドラッグで線を引く
        If e.Button = MouseButtons.Left Then
            pic_01.Image = pic_01.Image
            Dim g As Graphics = Graphics.FromImage(pic_01.Image)   ←エラー個所
            g.DrawLine(Pens.Black, Spos.X, Spos.Y, e.X, e.Y)
            g.Dispose()
            Spos = e
        End If
   End Sub

   Private Sub pic_01_MouseDown(ByVal sender As Object, ByVal e As  
   System.Windows.Forms.MouseEventArgs) Handles pic_01.MouseDown
        '描画開始位置
        Spos = e
   End Sub

[ツリー表示へ]
タイトルRe^5: pictureboxの画像
記事No1302
投稿日: 2005/01/20(Thu) 11:33
投稿者花ちゃん
> >  (後からでも、パスワードを入力して修正から修正できます。)
> 承知いたしました。

私の投稿(No.1299)を読まなかったのですか?No.1291の投稿を修正して下さいと言っているのです。
同じ事を何度も投稿してもらっても意味がありません。
(下記のように書いていたはずですが)
># コードを投稿される場合上記のようにペーストすればすぐテストできる状態で
> 投稿して頂けると解決が早いのですが。

又、すでに問題を解決したコードを投稿したはず(No.1299)なのに試して見たのですか?
(試すに値しないのなら削除しますが・・・・)
”聞く耳持たぬ”なら、後は自分でお好きなようにして下さい。END

[ツリー表示へ]
タイトルすみませんでした
記事No1304
投稿日: 2005/01/20(Thu) 12:00
投稿者mikiko
[OSのVer]:Windows    [VBのVer]:VB.NET  
> > >  (後からでも、パスワードを入力して修正から修正できます。)
> > 承知いたしました。
>
> 私の投稿(No.1299)を読まなかったのですか?No.1291の投稿を修正して下さいと言っているのです。
> 同じ事を何度も投稿してもらっても意味がありません。
> (下記のように書いていたはずですが)
> ># コードを投稿される場合上記のようにペーストすればすぐテストできる状態で
> > 投稿して頂けると解決が早いのですが。
>
> 又、すでに問題を解決したコードを投稿したはず(No.1299)なのに試して見たのですか?
> (試すに値しないのなら削除しますが・・・・)
> ”聞く耳持たぬ”なら、後は自分でお好きなようにして下さい。END
おこらせてしまったようで申し訳ありません。
教えていただいたサンプルコードで再度試したコードが、No1301です。
最初の投稿のときとコードがちがうので修正せず、新たに投稿した次第です。
すみませんでした。

[ツリー表示へ]
タイトルRe^5: pictureboxの画像
記事No1313
投稿日: 2005/01/21(Fri) 08:23
投稿者花ちゃん
>pixelformatを変えずに処理する方法はないでしょうか?

多分無いのでは。(下記参照)

hhttp://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemdrawinggraphicsclassfromimagetopic.asp
hhttp://www.gdncom.jp/general/bbs/ShowPost.aspx?PostID=514#579
hhttp://www.vbcity.com/forums/topic.asp?tid=2797

[ツリー表示へ]
タイトルRe^6: pictureboxの画像
記事No1315
投稿日: 2005/01/21(Fri) 09:39
投稿者mikiko
[OSのVer]:Windows    [VBのVer]:VB.NET  
bitmapを変更してよいということになりました。
どうもありがとうございました。

[ツリー表示へ]