也谈VB.NET中心旋转图像
发布日期:2021-06-29 03:43:48 浏览次数:2 分类:技术文章

本文共 1635 字,大约阅读时间需要 5 分钟。

今天在网上看有些人的文章,很是不怎么样。实在忍不住了。

 

简单的写了一下下。

 

 

 

鼠标拖拽旋转。任意角度。。

 

 

Public Class Form1

    Dim bmp As Bitmap
    Dim bmpsize As Single
    Dim gr As Graphics
    Dim pb As Point
    Dim po As PointF

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        bmpsize = Math.Sqrt(Me.Icon.Width ^ 2 + Me.Icon.Height ^ 2)
        bmp = New Bitmap(CInt(bmpsize), CInt(bmpsize))
        gr = Graphics.FromImage(bmp)
        po = New PointF((bmpsize - Me.Icon.Width) / 2, (bmpsize - Me.Icon.Height) / 2)
        gr.DrawIcon(Me.Icon, po.X, po.Y)
        PictureBox1.Image = bmp
    End Sub

    Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown

        pb = e.Location
    End Sub

    Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove

        If Not pb = Point.Empty Then
            'O/-----------B
            '  /
            '   /
            '    /
            '    E
            Dim vOB, vOE As Windows.Vector
            vOB = New Windows.Vector(bmpsize / 2, bmpsize / 2) - New Windows.Vector(pb.X, pb.Y)
            vOE = New Windows.Vector(bmpsize / 2, bmpsize / 2) - New Windows.Vector(e.X, e.Y)
            '可以用叉乘求面积,正负号代表旋转方向,而后正弦定理求角度,
            Dim O As Double = Windows.Vector.AngleBetween(vOB, vOE)
            '若角度为有效值
            gr.TranslateTransform(bmpsize / 2, bmpsize / 2)         '移动坐标至图像中心
            gr.RotateTransform(O)                                   '按角度旋转
            gr.TranslateTransform(-bmpsize / 2, -bmpsize / 2)       '移回
            gr.Clear(Color.Transparent)                             '清除原有图像
            gr.DrawIcon(Me.Icon, po.X, po.Y)                        '绘制新图像
            PictureBox1.Image = bmp
            pb = e.Location
        End If

    End Sub

    Private Sub PictureBox1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp

        pb = Point.Empty
    End Sub

End Class

转载地址:https://blog.csdn.net/zcsor/article/details/3087316 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【一种基于灰度差的模板匹配】
下一篇:验证码&游戏外挂与图像识别——ANN

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年04月10日 08时36分31秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

Atitit 开发效率大法 v0 t025.docx Atitit 提升开发效率几大策略 目录 1. 提升效率三原则 3 1.1. 更少的代码量简化 3 1.2. 优化配置减少等待 3 1.3. 2019-04-29
Atitit mybatis的扩展使用sql udf,js java等语言 目录 1.1. 默认,mybatis使用xml,sql等语言来书写业务流程 1 2. 使用ognl调用java函数 1 3 2019-04-29
Atitit if else 选择决策流程ast对比 sql java 表达式类型 binaryExpression hase left and rit expr 目录 1.1. Sql 1 2019-04-29
Atitit 数据库存储引擎 目录 1.1. BLACKHOLE 黑洞引擎 1 1.2. Myisam innodb 1 1.3. Archive 档案类 1 1.4. Fed 连接引擎 2 1. 2019-04-29
Atitit sql注入的防范 目录 1.1. 检查数据类型 1 2. 有限操作DML 1 2.1. 限制执行函数黑名单机制 2 2.2. 限制执行系统sp 2 2.3. 限制数据查询语句类型,只能 2019-04-29
Atitit 自然语言与人工语言的语法构建ast的异同点 目录 1. 语言节点gaishu。。 2 1.1. 节点、函数数量大约200个 2 1.2. 关键词节点 是 有 的 3 1.3. 标识符 2019-04-29
Atitit 效率提升法细则 v3 t028.docx Atitit 提升效率细则 目录 1. 目标 2 1.1. 配置化增加扩展性 尽可能消除编译 方便增加 调整业务逻辑 2 1.2. 统一接口 2019-04-29
Atitit 工程师程序员技术级别对应表与主要特征 P1--p6 说明 类别 职称 对应技术标志 P5 高级工程师 工程师类 一般四五年 P6 资深开发 工程师类 78年经历 P7 P7 2019-04-29
paip.activex控件在WEB中使用流程与工具 2019-04-29
paip.软件及网站项目开发效率低下的思索与改进 2019-04-29
Atitit 可移植性之道attilax著 2019-04-29
paip.截屏功能流程说明 2019-04-29
Atiitt uke兼wag集团2017年度成果报告总结 attilax著 1. 组织机构进一步完善 8大首席部门 1 2. 事业部进一步完善,以及一百多个事业部了 1 3. 企业文化进一步完善 1 2019-04-29
Atititi ui之道 attilax著 v3 s11.docx 1. 概览 2 1.1. 软件设计可分为两个部分:编码设计与UI设计 2 2. 用户界面设计的三大原则是:置界面于用户的控制之下; 2019-04-29
Atitit 集团与个人的完整入口列表 attilax的完整入口 1. 集团与个人的完整入口列表 1 2. 流量入口概念 2 3. 流量入口的历史与发展 2 1.集团与个人的完整入口列表 2019-04-29
Atitit 网络编程之道 2019-04-29
Atiitt attilax掌握的前后技术放在简历里面.docx 2019-04-29
Atiitt 文档处理之道 attilax著 2019-04-29
Atiitt 可视化 报表 图表之道 attilax著 Atitit.可视化与报表原理与概论 1. 信息可视化 1 2. Gui可视化 2 2.1. atitit 知识的可视化.docx 2 2019-04-29
paip.c#图片裁剪 2019-04-29