none
ピクチャーボックスに四角形を書く RRS feed

  • 質問

  • PictureBox4.Image = PictureBox1.Image

    にして、4に四角形の枠線を書けない。

    PictureBox4に

    マウスイベント  Private Sub PictureBox1_MouseMove
                inw0 = intX
                inw1 = e.X
                inh0 = intY
                inh1 = e.Y
                inw3 = inw1 - inw0
                If inw3 < 0 Then
                    inw3 = inw0
                    inw0 = inw1
                    inw1 = inw3
                    inw3 = inw1 - inw0
                End If
                inh3 = inh1 - inh0
                If inh3 < 0 Then
                    inh3 = inh0
                    inh0 = inh1
                    inh1 = inh3
                    inh3 = inh1 - inh0
                End If
                intX1 = inw3
                intY1 = inh3
                ' PictureBox1.Refresh()
                System.Threading.Thread.Sleep(50)

               Dim b1 As Bitmap = PictureBox1.Image
                Dim b4 As Bitmap = PictureBox4.Image
                Dim color0 As Color
                Dim color1 As Color
                color1 = Color.Brown
                For ii = 1 To intY1 Step 1
                    For i = 1 To intX1 Step 1
                        color0 = b1.GetPixel(i + inw0, ii + inh0)
                        '    color0 = b4.GetPixel(i + inw0, ii + inh0)
                        b4.SetPixel(i + inw0 - 1, ii + inh0 - 1, color0)
                        '    b1.SetPixel(i + inw0 - 1, ii + inh0 - 1, color0)
                    Next i
                Next ii
                ' PictureBox1.Refresh()
                System.Threading.Thread.Sleep(50)
                Dim tmpcolor As New Pen(Color.Blue, 3)
                Gr4.DrawRectangle(Pens.Blue, intX - 1, intY - 1, e.X - intX + 1, e.Y - intY + 1)
                PictureBox4.Refresh()
                '   Gr.DrawRectangle(Pens.Blue, intX - 1, intY - 1, e.X - intX + 1, e.Y - intY + 1)
                PictureBox1.Image = PictureBox4.Image
                PictureBox1.Refresh()
                Exit Sub

    ボイル度の所が問題です。


    Q&A

    2017年1月12日 4:10

すべての返信

  • PictureBox1とPictureBox4があるようですが、どのようなことを実現されたいのでしょうか?
    Gr4の記述がありますが、これは何でしょうか?
    このコードを初めて読む人にとって、これらの情報はとても役に立ちます。

    ところで、「ボイル度」は「ボールド」のことですよね?
    もう少し詳しく丁寧に質問していただくと、より良い回答が早く付く可能性が高まります。


    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    2017年1月12日 4:40
    モデレータ
  • 本当のラインを引く前に補助ラインを描画して、明示的にラインの感覚を表示したいのです。消して、新しいポイントまでのラインを引きマウスアップで確定したいのです。ペイントの線引きの様な事を自分流にしたいのです。

    Q&A

    2017年1月12日 5:16
  •  Imports System.ComponentModel
    Public Class Form1
        Dim Form1 As Form1
        Dim r_rod As Integer = 0
        Dim Gr As Graphics      'グラフィックオブジェクト
        Dim Gr2 As Graphics
        Dim Gr3 As Graphics
        Dim Gr4 As Graphics
        Dim pcolor As Color = Color.Black
        Dim g_ch As String

        Dim DrawFlg As Integer  'ドローモード
        Dim gaidwak As Integer = 0
        Dim intX As Integer     'マウスポインタX
        Dim xp As Integer
        Dim intX1 As Integer
        Dim intY As Integer     'マウスポインタY
        Dim yp As Integer
        Dim intY1 As Integer
        Dim iwh As Integer = 0
        Dim cpkan As Integer = 0
        Dim getcolor As Integer

     Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Dim Form1 As New Form1
            gashitu = 1
            PictureBox1.SizeMode = PictureBoxSizeMode.AutoSize
            PictureBox1.CreateGraphics()
            PictureBox1.Image = Nothing
            PictureBox1.Image = New Bitmap(1280, 800)
            Gr = Graphics.FromImage(PictureBox1.Image)
            strImageFileName = "tukurutop.png"
            g_ch = strImageFileName
            ' PictureBox1.Image = System.Drawing.Image.FromFile(strImageFileName)
            PictureBox1.Refresh()

            '   PictureBox1.BackgroundImage = PictureBox1.Image
            PictureBox2.CreateGraphics()
            PictureBox2.Image = Nothing
            PictureBox2.Image = New Bitmap(PictureBox1.Width, PictureBox1.Height)
            Gr2 = Graphics.FromImage(PictureBox2.Image)
            PictureBox2.Image = PictureBox1.Image
            PictureBox2.Refresh()
            PictureBox3.CreateGraphics()
            PictureBox3.Image = Nothing
            PictureBox3.Image = New Bitmap(PictureBox1.Width, PictureBox1.Height)
            Gr3 = Graphics.FromImage(PictureBox3.Image)
            PictureBox4.CreateGraphics()
            PictureBox4.Image = Nothing
            PictureBox4.Image = New Bitmap(PictureBox1.Width, PictureBox1.Height)
            Gr4 = Graphics.FromImage(PictureBox4.Image)

        End Sub

    取り合えずGr2,Gr3は無視してください。

    余計なの沢山ありますので、関係しない変数は消すか無視してください。


    Q&A

    2017年1月12日 5:39
  • サンプルを探してみましたが、以下のような感じでしょうか? 以下を応用してMouseUpイベントを用いれば、対応できませんでしょうか?

    Having trouble drawing simple rectangle in picturebox
    http://stackoverflow.com/questions/25854754/having-trouble-drawing-simple-rectangle-in-picturebox


    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    2017年1月12日 6:08
    モデレータ
  • 少し、解析してみます。

    Q&A

    2017年1月12日 7:09
  • やっぱり、私の能力では解決不能です。

    Q&A

    2017年1月13日 6:58
  • どの辺りが難しいのでしょうか? 私の方でリンクを貼ったページに載っているサンプルコードを動かしてみましたが、ちゃんと動いていましたし、おかしなコードではないと思いましたよ。このコードがきちんと理解できれば応用して解決できると思うのですが、このコードでわからない部分があれば、ご質問下さい。

    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    2017年1月13日 7:13
    モデレータ
  • 本当のラインを引く前に補助ラインを描画して、明示的にラインの感覚を表示したいのです。消して、新しいポイントまでのラインを引きマウスアップで確定したいのです。

    r「ラバーバンド」で検索。かな?

    Jitta@わんくま同盟

    2017年1月13日 23:35