VB中任意旋转位图的实现

2016-02-19 18:09 22 1 收藏

生活已是百般艰难,为何不努力一点。下面图老师就给大家分享VB中任意旋转位图的实现,希望可以让热爱学习的朋友们体会到设计的小小的乐趣。

【 tulaoshi.com - 编程语言 】

----在VISUALBASIC中没有什么命令或函数能够实现将一个位图旋转一个角度后显示出来,但我们可以用画点的方式,将一个图画盒中的位图中的像素点旋转一个角度后画入另一个图画盒中,当源图画盒中的像素都被画到目标图画盒中时,也就完成了位图的旋转。
  
  ----这里主要用到了VISUALBASIC中的两个方法:POINT方法和PSET方法。POINT方法的作用是从源图画盒中提取一个像素点的颜色值;而PSET方法的作用是按照旋转后的坐标和相应像素点的颜色值在目标图画盒中画点。显然这个方法的速度不会太快,因而适用于较小的图片。下面介绍一下实现方法:
  
  ----进入VISUALBASIC中,建立一个新的窗体。在窗体中加入两个图画盒控件(Picture1和Picture2),设置它们的Name属性为PicSource和PicTarget,并为PicSource图画盒的Picture属性设置一幅位图。再在窗体中加入一个按钮(CommandRotorate),设置它的Caption属性为“旋转”。然后加入以下代码:
  
  OptionExplicit
  ConstPi=3.14
  PrivateSubCommandRototate_Click()
  DimxAsInteger,yAsInteger
  DimX1AsInteger,Y1AsInteger
  DimX2AsDouble,Y2AsDouble
  DimX3AsDouble,Y3AsDouble
  DimJiaoDuAsDouble
  DimHuDuAsDouble
  JiaoDu=45'角度
  HuDu=JiaoDu*Pi/180'弧度
  PicSource.ScaleMode=vbPixels
  PicTarget.ScaleMode=vbPixels
  Forx=0ToPicTarget.ScaleWidth
  X1=x-PicTarget.ScaleWidth2
  Fory=0ToPicTarget.ScaleHeight
  Y1=y-PicTarget.ScaleHeight2
  X2=X1*Cos(-HuDu) Y1*Sin(-HuDu)
  Y2=Y1*Cos(-HuDu)-X1*Sin(-HuDu)
  X3=X2 PicSource.ScaleWidth2
  Y3=Y2 PicSource.ScaleHeight2
  IfX30AndX3PicSource.Scale
  Width-1AndY30AndY3
  PicSource.ScaleHeight-1Then
  PicTarget.PSet(x,y),PicSource.Point(X3,Y3)
  EndIf
  Nexty
  Nextx
  EndSub
  
  ----运行后,按下“旋转”按钮,可以见到源图画盒中的位图旋转45度后进入到目标图画盒中。如果要改变旋转的角度,只需将JiaoDu变量设置为相应值即可。->

来源:http://www.tulaoshi.com/n/20160219/1616932.html

延伸阅读
标签: 电脑入门
在WPS排版中经常会遇到对文字进行旋转的情况,我觉得使用WPS文字中的 文本框比较方便(WORD也能插入文本框,但是无法旋转)。我们可以通过WPS文字插入一个文本框,拖动文本框使文字旋转到任意一个角度。 单击插入菜单,指向 文本框,根据需要选择一个 横向或是竖向的文本框。然后在屏幕上拖出一个文本框,输入文字。 如果这时拖动文本框上端的...
所谓图形热点就是指定图形或图像上的某部分区域,当鼠标在这部分区域上单击或双击时,就像命令按钮一样会引发相应事件。笔者在VB5中用Windows提供的三个API函数轻松实现了任何形状的图形热点,在此具体介绍这一技术的实现步骤。 首先在VB5中新建一"标准EXE工程",设置窗体Form1的ScaleMode属性为3。在窗体代码的声明部分定义如下三个API函数...
用作者编写的椭圆类可以绘制任意方向的任意长短半轴椭圆,可以设置椭圆线型和粗细。 下面是利用CWzjEllipse类是绘制椭圆的代码: const double PI = 3.14159265; //获取绘图设备环境 CDC* pDC = GetDC(); //定义椭圆对象 CWzjEllipse ell; //绘制红色椭圆花瓣 for (int i = 0; i 4; i++) { //设置长短半轴长 ell.SetAB(80, 30); ...
一、API函数的声明、自定义数据类型及常量的定义 ----注意:API函数的声明应在应用程序的代码模块中进行,且一条声明必须放在一行中'API函数的声明 PublicDeclareFunctionFindFirstFileLib "kernel32"Alias"FindFirstFileA" (ByVallpFileNameAsString, lpFindFileDataAsWIN32_FIND_DATA)AsLong PublicDeclareFuncti...
Windows3.x、Windows95和Widnows98中,拖放是最常用的操作,VB5.0在程序设计中能非常容易地实现这一操作。 与拖放有关的属性 1、DragMode属性 该属性用来设置自动或手动拖放模式,缺省值为0(手动方式)。为了让控件自动执行拖放操作,必须把它的属性设为1,该属性即可以在属性窗口中设置,也可以在程序中设置,如:Picture1.DragMo...

经验教程

32

收藏

20
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部