VB.NET如何用e.Graphics绘制起始坐标110,110的15*15五角星
五角星绘制位置调整方案
你当前的代码生成的五角星坐标都是以画布左上角(0,0)为基准生成的,要移动到指定位置只需要给所有点统一加坐标偏移即可,以下是两种常见场景的调整方案:
场景1:x=110、y=110为五角星的左上角位置
也就是原来左上角对齐(0,0)的五角星,整体移动到左上角对齐(110,110),调整后的代码如下:
' Make the points for a star. Dim pts(4) As Point Dim cx As Integer = 15 \ 2 Dim cy As Integer = 15 \ 2 ' 新增偏移量配置 Dim offsetX As Integer = 110 Dim offsetY As Integer = 110 Dim theta As Double = -Math.PI / 2 Dim dtheta As Double = Math.PI * 0.8 For i As Integer = 0 To 4 ' 坐标计算后加上偏移量 pts(i).X = CInt(cx + cx * Math.Cos(theta)) + offsetX pts(i).Y = CInt(cy + cy * Math.Sin(theta)) + offsetY theta += dtheta Next i e.Graphics.FillPolygon(Brushes.Black, pts)
场景2:x=110、y=110为五角星的中心位置
原代码中cx、cy本身就是五角星的中心坐标,直接修改这两个变量的赋值即可:
' Make the points for a star. Dim pts(4) As Point ' 直接把中心设置为目标坐标 Dim cx As Integer = 110 Dim cy As Integer = 110 Dim theta As Double = -Math.PI / 2 Dim dtheta As Double = Math.PI * 0.8 For i As Integer = 0 To 4 pts(i).X = CInt(cx + (15\2) * Math.Cos(theta)) pts(i).Y = CInt(cy + (15\2) * Math.Sin(theta)) theta += dtheta Next i e.Graphics.FillPolygon(Brushes.Black, pts)
两种方案都保留了五角星15×15的尺寸,不会改变原有图形大小。
内容的提问来源于stack exchange,提问作者Andy Andromeda
相关产品推荐
相关产品推荐

