VB中任意旋转位图的实现

在VISUALBASIC中没有什么命令或函数能够实现 将一个位图旋转一个角度后显示出来,但我们可以用画点的方式,将一个图画盒中的位图 中的像素点旋转一个角度后画入另一个图画盒中,当源图画盒中的像素都被画到目标图画 盒中时,也就完成了位图的旋转。

这里主要用到了VISUALBASIC中的两个方法:POINT 方法和PSET方法。POINT方法的作用是从源图画盒中提取一个像素点的颜色值;而PSET方法 的作用是按照旋转后的坐标和相应像素点的颜色值在目标图画盒中画点。显然这个方法的 速度不会太快,因而适用于较小的图片。下面介绍一下实现方法:

进入VISUALBASIC中,建立一个新的窗体。在窗体 中加入两个图画盒控件(Picture1和Picture2),设置它们的Name属性为PicSource和PicTarget, 并为PicSource图画盒的Picture属性设置一幅位图。再在窗体中加入一个按钮(CommandRotorate), 设置它的Caption属性为“旋转”。然后加入以下代码:

Option Explicit
Const Pi = 3.14
Private Sub CommandRototate_Click()
Dim x As Integer, y As Integer
Dim X1 As Integer, Y1 As Integer
Dim X2 As Double, Y2 As Double
Dim X3 As Double, Y3 As Double
Dim JiaoDu As Double
Dim HuDu As Double
JiaoDu = 45 注释: 角 度
HuDu = JiaoDu * Pi / 180 注释: 弧 度
PicSource.ScaleMode = vbPixels
PicTarget.ScaleMode = vbPixels
For x = 0 To PicTarget.ScaleWidth
X1 = x - PicTarget.ScaleWidth \ 2
For y = 0 To PicTarget.ScaleHeight
Y1 = y - PicTarget.ScaleHeight \ 2
X2 = X1 * Cos(-HuDu) + Y1 * Sin(-HuDu)
Y2 = Y1 * Cos(-HuDu) - X1 * Sin(-HuDu)
X3 = X2 + PicSource.ScaleWidth \ 2
Y3 = Y2 + PicSource.ScaleHeight \ 2
If X3 > 0 And X3 < PicSource.Scale
Width - 1 And Y3 > 0 And Y3
< PicSource.ScaleHeight - 1 Then
PicTarget.PSet (x, y), PicSource.Point(X3, Y3)
End If
Next y
Next x
End Sub

运行后,按下“旋转”按钮,可以见到源图画盒中的 位图旋转45度后进入到目标图画盒中。如果要改变旋转的角度,只需将JiaoDu变量设置为 相应值即可。

时间: 2024-10-03 21:30:20

VB中任意旋转位图的实现的相关文章

让picturebox中的图片任意旋转一定角度的方法,求详解!!!!

问题描述 让picturebox中的图片任意旋转一定角度的方法,求详解!!!! 让指针旋转 求大牛指点 !! 谢谢了 解决方案 两种方法:1,指针图片旋转,也就是用图像处理的技术让图片旋转:2,直接旋转pictureBox,设置pictureBox的相关旋转属性. 解决方案二: public Bitmap Rotate(Bitmap b, int angle) { angle = angle % 360; //弧度转换 double radian = angle * Math.PI / 180.

Word 2003中的文字也可以任意旋转

孙述亮先生的<金山WPS 2005中文字任意旋转的巧妙方法>的文章为我们讲述的在WPS 2005中文字任意旋转的方法确实很好,但文中提到的"WORD也能插入文本框,但是无法旋转",我认为说得稍微有点过,因为在Word 2003中文字也可以任意旋转,且方便程度并不比WPS差. 一.文本框变图像法: 1.插入文本框后,把文本框中的文字设置好格式,右键单击文本框的边框,在弹出的快捷菜单中选择"设置文本框格式",在设置"文本框格式"对话框中选

如何让Word2003中文本框任意旋转

许多时候我们在Word中制作流程图.公章等各种图形的时候都会在图形里面插入"文本框",然后在里面输入文字.如果图形旋转了,那么"文本框"和文本框中的文字当然也要随着图形一起旋转,主要目的是为了让字体旋转角度与图形一样,这样看起来才会协调.这种效果往往被我们所用到,但问题是Word中没有能让文本框旋转的功能,要想让文本框旋转,只有自己来想办法了.下面我们来看看Word联盟是如何实现旋转文本框的吧! ①单击Word菜单栏"插入"选择"文本框

走近VB.Net(一),VB中的族,类,对象(摘录部分MSDN)

对象 走近VB.Net(一),VB中的族,类,对象 VB.Net是面向对象(object-oriented)的,又称为物件(object)导向(oriented).在VB.Net中所有的变量类型都是基于object,而不是VariantDim x As Variant 会被升级为 Dim as object.如果你不理解对象,暂时你可以把他理解为一段数据,他是实际存在于内存的,所以对象以称为实例(instance)而类(class)就是类别,他定义一群对象,是一个对象的群体,并定义方法成员.所以

VB外接程序的制做-在VB中创建您自己工具条和菜单

菜单|程序|创建|工具条 VB外接程序的制做二,在VB中创建您自己工具条和菜单 创建工具条依然需要使用到VBI,只要和VB打交道,必须有它,同时在上篇文章所阐述的菜单项的制做方法是对你现在即将做的工作有用的.有一点你必须知道,无论是创建按钮,还是创建菜单项,他们之间是没有区别的.只是有一些地方有一点点不同而已. 怎样创建工具条呢?非常简单. VBI.CommandBars.Add cbsToolsBarName 此方法后面当然有其它可选参数,但是有些东西对于现在我要阐述的问题是无关的. Func

如何在Word2007中任意调整图片大小

  Word2007提供了丰富的图片编辑功能,方便用户在不借助Photoshop等图片处理工具的情况下,直接在Word文档中对图片进行编辑.修改,甚至还可以为图片添加倒映.三维效果等.下面就来学习如何在Word2007中任意调整图片大小 . 为了满足编辑需要,插入图片后,通常还需要对图片的大小进行调整. (1)快速调整图片大小选中插入的图片,图片边缘会出现一线框,如图1所示,拖曳线框可以凋整图片的大小.当鼠标指针变成双向箭头时,拖曳鼠标可以让图片保持长宽比(原比例)进行调整. (2)精确调整图片

在Word2003中如何旋转文字

  在工作中,我们常常需要旋转文字,以达到一些特殊的效果,比如把文字旋转60度.在word文档,正常的文字仅能调整其横排或竖排,是不能任意角度旋转的.但我们可以通过一些操作技巧以达到将文字旋转的目的.下面两种方法或许可以帮助你: 一.借助其它图像工具,把文字制作成图片,然后插入word中,在word文档中图片是可以任意旋转的. 二.通过艺术字的格式来达到旋转文字的目的.先把光标定位到要旋转文字的地方,点击菜单栏的"插入"菜单,选择"图片"--"艺术字&qu

VB中使用lead控件加载jpg图片报错

问题描述 VB中使用lead控件加载jpg图片报错 调用LEAD1.BitmapDataPath = "111.jpg"时报错,换成111.bmp就没有问题,这种现象其他电脑没有,是什么问题 解决方案 这个不好说,你的图片没法解析,建议先转换成标准的位图格式再加载.

机房收费系统:(二)VB中强制大小写转换和记录集操作

一.VB中大小写的转换      VB中自带字母大小写转换函数LCase和UCase.      格式:UCase(任何有效的string或char表达式),UCase(string),U就是upper的意思,就是变大:相反的就是,LCase(任何有效的string或char表达式)函数,就是转换成小写字符,用法同理,不再累述.      说明:   (1)参数必选项,可为任意有效的字符或者表达式.                    (2)如果 string 参数中包含 Null,则返回 N