将位图旋转90度

三魂道尊

三魂道尊

2016-02-19 15:29

下面图老师小编跟大家分享将位图旋转90度,一起来学习下过程究竟如何进行吧!喜欢就赶紧收藏起来哦~

  本文将介绍如何将一张位图旋转90度。向工程添加一个Timage控件,取名为Image1。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  工作原理是:创建一个位图缓冲区用于存储中间量,将原位图的每一行的像素转换为每一列然后存放在我们创建的位图缓冲区中。最后,将旋转后的位图从缓冲区存回原位图。

  

//定义缓冲位图并剪切图形区域
Graphics::Tbitmap *bufferbitmap=new Graphics::Tbitmap();
bufferbitmap-Width=Image1-Height;
bufferbitmap-Height=Image1-Width;
static Trect sourcepix,destpix,fullbufferimage,fulldestimage;
fullbufferimage.Left= 0;
fullbufferimage.Top= bufferbitmap-Height;
fullbufferimage.Right= bufferbitmap-Width;
fullbufferimage.Bottom= 0;
//旋转并逐像素地拷贝原位图到缓冲位图
for (int y=0; yImage1-Height; y++)
{
 for (int x=0; xImage1-Width; x++)
 {
  sourcepix.Left= x;
  sourcepix.Top= y+1;
  sourcepix.Right= x+1;
  sourcepix.Bottom= y;
  destpix.Left=y;
  destpix.Top=bufferbitmap-Height-x;
  destpix.Right=y+1;
  destpix.Bottom=bufferbitmap-Height-x-1;
  bufferbitmap-Canvas-CopyRect(destpix,Image1-Canvas,sourcepix);
 }
}
//调整原位图的尺寸并拷贝旋转后的缓冲位图到原位图
Image1-Width=bufferbitmap-Width;
Image1-Height=bufferbitmap-Height;
Image1-Picture-Bitmap-Width=bufferbitmap-Width;
Image1-Picture-Bitmap-Height=bufferbitmap-Height;
Image1-Canvas-CopyRect(fullbufferimage,bufferbitmap-Canvas,fullbufferimage);

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)
展开更多 50%)
分享

猜你喜欢

将位图旋转90度

编程语言 网络编程
将位图旋转90度

VB中位图旋转的实现

编程语言 网络编程
VB中位图旋转的实现

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

word图片按90度或任意角度自由旋转

计算机应用技术 word
word图片按90度或任意角度自由旋转

VB中任意旋转位图的实现

编程语言 网络编程
VB中任意旋转位图的实现

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

如何在vc++中旋转位图

编程语言 网络编程
如何在vc++中旋转位图

word中将文字转为图片实现字体旋转90度或任意角度

电脑应用 计算机应用技术 word
word中将文字转为图片实现字体旋转90度或任意角度

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

我学会了 不再等待 - QQ情侣分组

我学会了 不再等待 - QQ情侣分组

教程:MYSQL创建触发程序的方法

教程:MYSQL创建触发程序的方法
下拉加载更多内容 ↓