快速业务通道

将位图旋转90度

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-30

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

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

//定义缓冲位图并剪切图形区域
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; y<Image1->Height; y++)
{
  for (int x=0; x<Image1->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://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号