Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在vb.net中绘制与图片重叠的线条_Vb.net_Image_Overlay_Paint - Fatal编程技术网

在vb.net中绘制与图片重叠的线条

在vb.net中绘制与图片重叠的线条,vb.net,image,overlay,paint,Vb.net,Image,Overlay,Paint,我试图在vb.net中复制此控件,但使用HSL值而不是HSV。 到目前为止,我发现所有的图像框,包括滑块。色轮的图像为180x128(整个颜色范围的一半,即360x255)。图像框的位置定义了选定的颜色范围 移动滑块时,这些线会绘制在图像上,但它们会重叠。它们不在图像本身上。它们随着滑块的位置移动 如何将这些线条叠加到图片上,移动它们的最佳方式是什么?在每个移动的像素处删除并重新绘制线条?不是很慢吗 -----编辑----- 当前代码: Private Sub PictureBox1_Pain

我试图在vb.net中复制此控件,但使用HSL值而不是HSV。 到目前为止,我发现所有的图像框,包括滑块。色轮的图像为180x128(整个颜色范围的一半,即360x255)。图像框的位置定义了选定的颜色范围

移动滑块时,这些线会绘制在图像上,但它们会重叠。它们不在图像本身上。它们随着滑块的位置移动

如何将这些线条叠加到图片上,移动它们的最佳方式是什么?在每个移动的像素处删除并重新绘制线条?不是很慢吗

-----编辑-----

当前代码:

Private Sub PictureBox1_Paint(sender As Object, e As PaintEventArgs) Handles PictureBox1.Paint
    Try
        Dim gxoff As Graphics
        Dim pen As Pen = New Pen(Color.Azure)
        gxoff.DrawImage(Me.PictureBox1.Image, New Rectangle(Me.PictureBox1.Left, Me.PictureBox1.Top, Me.PictureBox1.Width, Me.PictureBox1.Height), New Rectangle(0, 0, Me.PictureBox1.Image.Width, Me.PictureBox1.Image.Height), GraphicsUnit.Pixel)
        pen.DashStyle = DashStyle.Dash
        Dim num1 As Integer = Math.Min(Me.PictureBox1.Width - 1, Math.Max(0, Me.Hmax.Left - Me.PictureBox1.Left + 7)) + Me.PictureBox1.Left
        Dim num2 As Integer = Math.Min(Me.PictureBox1.Width - 1, Math.Max(0, Me.Hmin.Left - Me.PictureBox1.Left + 7)) + Me.PictureBox1.Left
        Dim num3 As Integer = Math.Min(Me.PictureBox1.Height - 1, Math.Max(0, Me.Smax.Top - Me.PictureBox1.Top + Me.Smax.Height)) + Me.PictureBox1.Top
        Dim num4 As Integer = Math.Min(Me.PictureBox1.Height - 1, Math.Max(0, Me.Smin.Top - Me.PictureBox1.Top)) + Me.PictureBox1.Top
        gxoff.DrawLine(pen, Me.PictureBox1.Left, num3, Me.PictureBox1.Left + Me.PictureBox1.Width, num3)
        gxoff.DrawLine(pen, Me.PictureBox1.Left, num4, Me.PictureBox1.Left + Me.PictureBox1.Width, num4)
        gxoff.DrawLine(pen, num1, Me.PictureBox1.Top, num1, Me.PictureBox1.Height + Me.PictureBox1.Top)
        gxoff.DrawLine(pen, num2, Me.PictureBox1.Top, num2, Me.PictureBox1.Height + Me.PictureBox1.Top)
        pen.DashStyle = DashStyle.Solid
        pen.Width = 2.0F
        gxoff.DrawLine(pen, num1, num3, num1, num4)
        gxoff.DrawLine(pen, num2, num3, num2, num4)

        If Me.Hmin.Left < Me.Hmax.Left Then
            gxoff.DrawLine(pen, num1, num3, num2, num3)
            gxoff.DrawLine(pen, num1, num4, num2, num4)
        Else
            gxoff.DrawLine(pen, Me.PictureBox1.Left, num3, num1, num3)
            gxoff.DrawLine(pen, Me.PictureBox1.Left, num4, num1, num4)
            gxoff.DrawLine(pen, num2, num3, Me.PictureBox1.Width + Me.PictureBox1.Left, num3)
            gxoff.DrawLine(pen, num2, num4, Me.PictureBox1.Width + Me.PictureBox1.Left, num4)
        End If



    Catch
    End Try

End Sub
私有子PictureBox1\u Paint(发送方作为对象,e作为PaintEventArgs)处理PictureBox1.Paint
尝试
将gxoff变暗为图形
Dim pen As pen=新笔(Color.Azure)
gxoff.DrawImage(Me.PictureBox1.Image,新矩形(Me.PictureBox1.Left,Me.PictureBox1.Top,Me.PictureBox1.Width,Me.PictureBox1.Height),新矩形(0,0,Me.PictureBox1.Image.Width,Me.PictureBox1.Image.Height),GraphicsUnit.Pixel)
pen.DashStyle=DashStyle.Dash
作为整数的Dim num1=Math.Min(Me.PictureBox1.Width-1,Math.Max(0,Me.Hmax.Left-Me.PictureBox1.Left+7))+Me.PictureBox1.Left
作为整数的Dim num2=Math.Min(Me.PictureBox1.Width-1,Math.Max(0,Me.Hmin.Left-Me.PictureBox1.Left+7))+Me.PictureBox1.Left
作为整数的Dim num3=Math.Min(Me.PictureBox1.Height-1,Math.Max(0,Me.Smax.Top-Me.PictureBox1.Top+Me.Smax.Height))+Me.PictureBox1.Top
Dim num4作为整数=Math.Min(Me.PictureBox1.Height-1,Math.Max(0,Me.Smin.Top-Me.PictureBox1.Top))+Me.PictureBox1.Top
gxoff.抽绳(钢笔,Me.PictureBox1.Left,num3,Me.PictureBox1.Left+Me.PictureBox1.Width,num3)
gxoff.抽绳(钢笔,Me.PictureBox1.Left,num4,Me.PictureBox1.Left+Me.PictureBox1.Width,num4)
gxoff.抽绳(钢笔,num1,Me.PictureBox1.Top,num1,Me.PictureBox1.Height+Me.PictureBox1.Top)
gxoff.抽绳(钢笔、num2、Me.PictureBox1.Top、num2、Me.PictureBox1.Height+Me.PictureBox1.Top)
pen.DashStyle=DashStyle.Solid
笔宽=2.0F
gxoff.拉线(pen、num1、num3、num1、num4)
gxoff.拉线(pen、num2、num3、num2、num4)
如果Me.Hmin.Left
处理
画框的
绘制事件
您想画线。谢谢,但这不会直接在图像上绘制吗?我想在上面画画,这样线条就可以移动了。。比如photoshop中的一个图层..当你自己测试它时发生了什么?它根本没有画任何东西。。。刚刚用当前代码更新了帖子。永远不要写Try/Catch em all do nothing代码。用gxoff=e.Graphics修复此错误。不要使用DrawImage(),PictureBox已经解决了这个问题。