问题描述
为了准备秋季即将开课的 Adobe Illustrator 课程,学生们在学习钢笔工具和如何绘制贝塞尔曲线时总是骂人,我想我会为他们提供一些 Illustrator 之外的“理论基础”。到目前为止,我能够通过在单独的文本框中输入的 x 和 y 坐标描述的四个点来演示曲线的工作原理(请参阅附加的屏幕截图)。我的问题是,如何通过让学生“选择”控制点(以蓝色显示)并在图片框周围移动它们来将这个静态演示“转换”为交互式演示?这不是一个简单的问题。任何指针将不胜感激。
这是我目前的源代码:
Public Class Form1
Dim Point1_X,Point1_Y,Point2_X,Point2_Y,Point3_X,Point3_Y,Point4_X,Point4_Y As Integer
Dim LignesDeDirection As Boolean
Private Sub Form1_Load(sender As Object,e As EventArgs) Handles MyBase.Load
LignesDeDirection = False
Point1_X = 100
Point1_Y = 100
Point2_X = 200
Point2_Y = 200
Point3_X = 50
Point3_Y = 250
Point4_X = 400
Point4_Y = 400
tbPoint1_X.Text = Point1_X
tbPoint1_Y.Text = Point1_Y
tbPoint2_X.Text = Point2_X
tbPoint2_Y.Text = Point2_Y
tbPoint3_X.Text = Point3_X
tbPoint3_Y.Text = Point3_Y
tbPoint4_X.Text = Point4_X
tbPoint4_Y.Text = Point4_Y
End Sub
Private Sub PictureBox1_Paint(sender As Object,e As PaintEventArgs) Handles PictureBox1.Paint
e.Graphics.Clear(Color.LightGray)
Dim FondBlanc As New SolidBrush(Color.White)
e.Graphics.FillRectangle(FondBlanc,PictureBox1.Width,PictureBox1.Height)
Dim blackPen = New Pen(Color.FromArgb(128,128,128),1)
Dim blackPen2pix = New Pen(Color.FromArgb(64,64,64),2)
Dim EllipsePen = New Pen(Color.FromArgb(0,255),3)
Dim blackPen3 = New Pen(Color.Black,5.0F)
Dim blackPen2 = New Pen(Color.FromArgb(164,164,164),1)
Dim CouleurPoint As New SolidBrush(Color.magenta)
Dim CouleurControl As New SolidBrush(Color.Blue)
Dim Color2 = New Pen(Color.FromArgb(128,1)
Dim Penbleu As New Pen(Color.Black,2.0F)
Penbleu.EndCap = System.Drawing.drawing2d.LineCap.Flat 'Penbleu.StartCap = System.Drawing.drawing2d.LineCap.ArrowAnchor
Penbleu.CustomEndCap = New System.Drawing.drawing2d.adjustableArrowCap(8,8)
Dim point1 As New Point(Point1_X,Point1_Y)
Dim point2 As New Point(Point2_X,Point2_Y)
Dim point3 As New Point(Point3_X,Point3_Y)
Dim point4 As New Point(Point4_X,Point4_Y)
e.Graphics.FillEllipse(CouleurPoint,Point1_X - 5,Point1_Y - 5,10,10)
e.Graphics.FillEllipse(CouleurControl,Point2_X - 5,Point2_Y - 5,Point3_X - 5,Point3_Y - 5,10)
e.Graphics.FillEllipse(CouleurPoint,Point4_X - 5,Point4_Y - 5,10)
Dim PenDashmagenta As New Pen(Color.magenta,1.5F)
PenDashmagenta.DashStyle = drawing2d.DashStyle.Dash
Dim PenRéférence As New Pen(Color.ForestGreen,1.0F)
If cbDirectionLines.Checked = True Then
LignesDeDirection = True
e.Graphics.DrawLine(PenRéférence,Point1_X,Point2_Y)
e.Graphics.DrawLine(PenRéférence,Point4_Y)
Else
LignesDeDirection = False
End If
e.Graphics.DrawEllipse(PenDashmagenta,Point1_X - 40,Point1_Y - 40,80,80)
e.Graphics.DrawEllipse(PenDashmagenta,Point4_X - 40,Point4_Y - 40,80)
e.Graphics.DrawBezier(Penbleu,point1,point2,point3,point4)
End Sub
Private Sub btndisplay_Click(sender As Object,e As EventArgs) Handles btndisplay.Click
Point1_X = tbPoint1_X.Text
Point1_Y = tbPoint1_Y.Text
Point2_X = tbPoint2_X.Text
Point2_Y = tbPoint2_Y.Text
Point3_X = tbPoint3_X.Text
Point3_Y = tbPoint3_Y.Text
Point4_X = tbPoint4_X.Text
Point4_Y = tbPoint4_Y.Text
PictureBox1.Invalidate()
End Sub
结束类
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)