将位图旋转90度
2008-02-23 05:36:01来源:互联网 阅读 ()
工作原理是:创建一个位图缓冲区用于存储中间量,将原位图的每一行的像素转换为每一列然后存放在我们创建的位图缓冲区中。最后,将旋转后的位图从缓冲区存回原位图。
//定义缓冲位图并剪切图像区域
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);
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇: 两个小时学会DirectDraw编程
下一篇: CB编程中动态更改自定义打印纸张
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash