频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

vb.net用Graphics画一个五角星

来源:巧巧读书网 作者:douces 出处:巧巧读书 2007-12-22 进入讨论组
下一页 1 2 

要使用vb.net中的 Graphics 对象来绘制一个五角星,最重要的是需要获取五角星的10个点的坐标(5个顶点和5个凹点),这个需要通过数学公式来计算,但是我们这篇文章就不针对数学公式进行深入讨论,只来了解下 Graphics 对象绘制多边形的知识。

Graphics 对象提供了 DrawPolygon 让我们绘制多边形区域的边,  FillPolygon 方法填充多边形区域。

如下代码为绘制一个空心的五角星:

Sub DrawStar(ByVal g As Graphics, ByVal center As Point, ByVal radius As Integer, ByVal isSolid As Boolean)

Dim pts(9) As Point

pts(0) = New Point(center.X, center.Y - radius)

pts(1) = RotateTheta(pts(0), center, 36.0)

Dim len As Double = radius * Math.Sin((18.0 * Math.PI / 180.0)) / Math.Sin((126.0 * Math.PI / 180.0))

pts(1).X = CInt(center.X + len * (pts(1).X - center.X) / radius)

pts(1).Y = CInt(center.Y + len * (pts(1).Y - center.Y) / radius)

Dim i As Integer

For i = 1 To 4

pts((2 * i)) = RotateTheta(pts((2 * (i - 1))), center, 72.0)

pts((2 * i + 1)) = RotateTheta(pts((2 * i - 1)), center, 72.0)

Next i

If isSolid = False Then

Dim mPen As New Pen(New SolidBrush(Color.Blue))

g.DrawPolygon(mpen, pts)'画一个空心五角星

Else

Dim mBrush As New SolidBrush(Color.Blue)

g.FillPolygon(mBrush, pts)'画一个实心的五角星

End If

End Sub

'旋转

Function RotateTheta(ByVal pt As Point, ByVal center As Point, ByVal theta As Double) As Point

Dim x As Integer = CInt(center.X + (pt.X - center.X) * Math.Cos((theta * Math.PI / 180)) - (pt.Y - center.Y) * Math.Sin((theta * Math.PI / 180)))

Dim y As Integer = CInt(center.Y + (pt.X - center.X) * Math.Sin((theta * Math.PI / 180)) + (pt.Y - center.Y) * Math.Cos((theta * Math.PI / 180)))

Return New Point(x, y)

End Function

正文:http://www.qqread.com/book/myvbnet/200712213.html 更多文章 更多内容请看.NET移动与嵌入式技术.NET开发手册专题,或进入讨论组讨论。
下一页 1 2 
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章