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

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

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

Re[6]: ピクチャボックス内のグラフィックで書いた図形の下にJPEGを


(過去ログ 22 を表示中)

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

■9262 / inTopicNo.1)  ピクチャボックス内のグラフィックで書いた図形の下にJPEGを
  
□投稿者/ トッチー (1回)-(2007/10/23(Tue) 21:58:10)

分類:[VB.NET/VB2005] 

タイトルが最大入力可能数を超えたので改めて書きますが、
ピクチャボックス(PicWaku)内にグラフィックで書いた線などの下側にJPEGなどの画像ファイルを呼び出したいのですが、画像ファイルがグラフィックで書いた線の上になって線が消えてしまいます。

Public Class Form1
    Inherits System.Windows.Forms.Form
    Dim gra As Graphics
    Dim drawFlg As Boolean
    Dim x1 As Integer = -1, y1 As Integer
    Dim x2 As Integer = -1, y2 As Integer
    Dim mypen As New Pen(Color.Black, 2)
(中略)
  '起動
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
        With picWaku
            .Image = Nothing
            .SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize
            .Image = New Bitmap(picWaku.Width, picWaku.Height)
            gra = Graphics.FromImage(.Image)
            gra.Clear(Color.White)
        End With
    End Sub

    Private Sub PicWaku_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PicWaku.MouseMove
        If drawFlg = True Then
            gra.DrawLine(mypen, x2, y2, e.X, e.Y)
            x2 = e.X : y2 = e.Y
            picWaku.Refresh()
        End If
    End Sub
    Private Sub PicWaku_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PicWaku.MouseUp
        drawFlg = False
        picWaku.Refresh()
    End Sub
   Private Sub PicWaku_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PicWaku.MouseDown
            x2 = e.X : y2 = e.Y
            drawFlg = True
End Sub

  '画像を呼び出すボタン(cmdRoad)
  'このボタンを押したとき、マウスで書いた図形の下に画像を呼び込む
    Private Sub cmdRoad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdRoad.Click
        Dim MyPath As String = Application.StartupPath
        Dim inifilepath As String
        If MyPath.EndsWith("\") = False Then
            MyPath &= "\"
        End If
        inifilepath = MyPath & "seikai.jpg"
        If System.IO.File.Exists(inifilepath) = True Then
            PicWaku.Image = Image.FromFile(inifilepath)
            'PicWaku.Image = PicWaku.Image
        End If
    End Sub

  '終了するボタン(cmdExit)
    Private Sub cmdExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdExit.Click
        Application.Exit()
    End Sub


    Dim gra As Graphics
の gra を上手く使えば出来そうですが。

アドバイスをお願いします。

引用返信 編集キー/
■9266 / inTopicNo.2)  Re[1]: ピクチャボックス内のグラフィックで書いた図形の下にJPEGを
□投稿者/ 渋木宏明(ひどり) (492回)-(2007/10/23(Tue) 23:35:13)
渋木宏明(ひどり) さんの Web サイト
全面的に、とは言いませんが「PictureBox に*直接*描画する」ことが自由度を下げてるんです。

似たような話は

http://bbs.wankuma.com/index.cgi?mode=al2&namber=8957

でもやってるんで、参考にしてみてくださ。

引用返信 編集キー/
■9274 / inTopicNo.3)  Re[2]: ピクチャボックス内のグラフィックで書いた図形の下にJPEGを
□投稿者/ トッチー (2回)-(2007/10/24(Wed) 06:37:34)
大変申し訳ないのですが、
どのようにすれば、自由度を下げずに
「ピクチャボックス(PicWaku)内にグラフィックで書いた線などの下側にJPEGなどの画像ファイルを呼び出す」事が出来るのかピンときません。

ヒントをいただけませんか?

引用返信 編集キー/
■9275 / inTopicNo.4)  Re[3]: ピクチャボックス内のグラフィックで書いた図形の下にJPEGを
□投稿者/ 渋木宏明(ひどり) (494回)-(2007/10/24(Wed) 09:08:03)
渋木宏明(ひどり) さんの Web サイト
> ヒントをいただけませんか?

前の投稿で紹介したスレッドは参考になりませんでしたか?

引用返信 編集キー/
■9338 / inTopicNo.5)  Re[4]: ピクチャボックス内のグラフィックで書いた図形の下にJPEGを
□投稿者/ トッチー (3回)-(2007/10/24(Wed) 19:16:57)
リンク先の更にリンク先を見てみましたが分からないです。

上記の仕様はまだごく一部です。

後々、ピクチャーボックスに表示させた物をJPEG保存する(←これは分かります)ので
ピクチャーボックスにこだわりたいです。
引用返信 編集キー/
■9349 / inTopicNo.6)  Re[5]: ピクチャボックス内のグラフィックで書いた図形の下にJPEGを
□投稿者/ 渋木宏明(ひどり) (498回)-(2007/10/24(Wed) 22:38:50)
渋木宏明(ひどり) さんの Web サイト
> リンク先の更にリンク先を見てみましたが分からないです。

わ、ごめんなさい。
URL が間違っていました。

http://bbs.wankuma.com/index.cgi?mode=al2&namber=8378

を参照してみてください。

PictureBox を使うこと自体がまずいと言っているわけではありません。
「PictureBox に直接描画する」という手法が自由度が低い、と言っています。

まず必要なサイズの Bitmap を用意して、そこに線でも絵でも好きなように描画してから PictureBox.Image プロパティに設定すればよい、というのが趣旨です。

> 後々、ピクチャーボックスに表示させた物をJPEG保存する(←これは分かります)ので
> ピクチャーボックスにこだわりたいです。

逆に質問なんですけど、PictureBox に「直接描画した」ものを、どうやって保存するつもりなんですか?

Bitmap を用意する方法なら、Bitmap.Save() がサポートしている形式で簡単に保存することができます。


引用返信 編集キー/
■9469 / inTopicNo.7)  Re[6]: ピクチャボックス内のグラフィックで書いた図形の下にJPEGを
□投稿者/ トッチー (4回)-(2007/10/28(Sun) 07:29:07)
返事がおそくなりました。
リンク先が見えないです。

しかし、僕の早とちりでした。

Dim gra As Graphics
をしてるから、
それで画像を呼び出せばいいですよね。

Dim myImage = Image.FromFile(inifilepath)
gra.DrawImage(myImage, 0, 0)
PicWaku.Refresh()
という感じで。

図形を重ねて呼び出すには、後から呼び出す画像の
背景色を透明で呼び出せば重ねることができますもんね。
(そのソースは諸事情により載せれません)

>PictureBox に「直接描画した」ものを、どうやって保存するつもりなんですか?

If Not (PicWaku.Image Is Nothing) Then
PicWaku.Image.Save("test.jpg", Imaging.ImageFormat.Jpeg)
End If

で出来ますよね。


今までアドバイスをいただきありがとうございました。
もう少し冷静になって考えることを自覚しようと思います。



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


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

このトピックに書きこむ

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

管理者用

- Child Tree -