当前位置: 首页 > wzjs >正文

佛山建设网站公司哪家好单页的网站怎么做

佛山建设网站公司哪家好,单页的网站怎么做,淘宝内部优惠券网站怎么建设,上海app制作公司想用Lazarus旋转图片,在QT上轻松就能做到的事情,在lazarus上却没有标准实现,只能用其他方式。找了挺多帖子,有这三种有效的方案。 第一种:不依赖其他控件 procedure TMainForm.RotateImage(Bitmap: TBitmap); varNewB…

想用Lazarus旋转图片,在QT上轻松就能做到的事情,在lazarus上却没有标准实现,只能用其他方式。找了挺多帖子,有这三种有效的方案。

第一种:不依赖其他控件

procedure TMainForm.RotateImage(Bitmap: TBitmap);
varNewBitmap: TBitmap;X, Y: integer;
begin// 创建新的位图对象,用于存储旋转后的图片NewBitmap := TBitmap.Create;try// 设置新位图的宽度和高度,这里交换原位图的宽度和高度NewBitmap.Width := Bitmap.Height;NewBitmap.Height := Bitmap.Width;// 遍历原位图的每个像素for Y := 0 to Bitmap.Height - 1 dofor X := 0 to Bitmap.Width - 1 do// 将原位图的像素按照旋转规则复制到新位图中NewBitmap.Canvas.Pixels[Bitmap.Height - Y - 1, X] := Bitmap.Canvas.Pixels[X, Y];// 清空原位图Bitmap.Canvas.FillRect(0, 0, Bitmap.Width, Bitmap.Height);// 复制旋转后的位图到原位图Bitmap.Assign(NewBitmap);finally// 释放新位图对象NewBitmap.Free;end;
end;

问题是,速度太慢、内存开销较大,一张1080P的图片运行一次要耗费2秒钟左右,太慢了。

第二种:依赖 TBGRABitmap,使用 TBGRAAffineBitmapTransform 进行变换

procedure TMainForm.RotateImage;
varBGRAImg: TBGRABitmap;Affine: TBGRAAffineBitmapTransform;Temp: TBGRABitmap;OldWidth, OldHeight: integer;
begin// 检查 Image1 中是否有图片if Image1.Picture.Bitmap = nil thenExit;OldWidth := Image1.Picture.Bitmap.Width;OldHeight := Image1.Picture.Bitmap.Height;// 创建 TBGRABitmap 对象,并将 Image1 中的图片转换为 TBGRABitmapBGRAImg := TBGRABitmap.Create(Image1.Picture.Bitmap);try// 创建仿射变换对象Affine := TBGRAAffineBitmapTransform.Create(BGRAImg);try// 先将图像平移到原点Affine.Translate(-BGRAImg.Width div 2, -BGRAImg.Height div 2);// 向右旋转 90 度Affine.RotateDeg(90);// 再平移回原来的位置Affine.Translate(BGRAImg.Height div 2, BGRAImg.Width div 2);// 创建临时的 TBGRABitmap 对象,用于存储旋转后的图像Temp := TBGRABitmap.Create(BGRAImg.Height, BGRAImg.Width, BGRAWhite);try// 使用仿射变换填充临时图像Temp.FillPolyAntialias([PointF(0, 0), PointF(Temp.Width, 0),PointF(Temp.Width, Temp.Height), PointF(0, Temp.Height)], Affine);Image1.Picture.Clear;// 调整 Image1 控件的大小以适应旋转后的图片Image1.Width := OldHeight;Image1.Height := OldWidth;// 将旋转后的图像用Image1绘制出Temp.Draw(Image1.Canvas, 0, 0);finally// 释放临时图像对象Temp.Free;end;finally// 释放仿射变换对象Affine.Free;end;finally// 释放 TBGRABitmap 对象BGRAImg.Free;end;
end;

尤其要注意:uses BGRATransform;

速度很快,和第一个比快了30倍左右。

第三种,使用 TBGRABitmap

procedure TMainForm.RotateImage;
varBGRAImg: TBGRABitmap;OldWidth, OldHeight: integer;
begin// 检查 Image1 中是否有图片if Image1.Picture.Bitmap = nil thenExit;// 记录原始图片的宽度和高度OldWidth := Image1.Picture.Bitmap.Width;OldHeight := Image1.Picture.Bitmap.Height;// 创建 TBGRABitmap 对象,并将 Image1 中的图片转换为 TBGRABitmapBGRAImg := TBGRABitmap.Create(Image1.Picture.Bitmap);tryif RotationDeg = 1 thenbeginBGRAReplace(BGRAImg, BGRAImg.RotateCW());   //右转90度end;if RotationDeg = 2 thenbeginBGRAReplace(BGRAImg, BGRAImg.RotateUD());    //翻转180度end;if RotationDeg = 3 thenbeginBGRAReplace(BGRAImg, BGRAImg.RotateCCW());    //左转90度end;// 清空 Image1 原有的图片Image1.Picture.Clear;// 调整 Image1 控件的大小以适应旋转后的图片if (RotationDeg = 1) or (RotationDeg = 3) thenbeginImage1.Width := OldHeight;Image1.Height := OldWidth;end;if (RotationDeg = 2) or (RotationDeg = 0) thenbeginImage1.Width := OldWidth;Image1.Height := OldHeight;end;BGRAImg.Draw(Image1.Canvas, 0, 0);finally// 释放 TBGRABitmap 对象BGRAImg.Free;end;
end;

这个是我个人测试内存开销最小的一个,速度和第二个相当。几乎肉眼看不到延迟。

也是我最后采纳的一个方案。


文章转载自:

http://1FCTIAzo.jhxdj.cn
http://1gUDWkrU.jhxdj.cn
http://yQGyQ2vd.jhxdj.cn
http://qo5npNwQ.jhxdj.cn
http://m3ScbAU8.jhxdj.cn
http://wfvgVgRk.jhxdj.cn
http://CyBDoJXp.jhxdj.cn
http://Vg8Jl78F.jhxdj.cn
http://CjynDTRm.jhxdj.cn
http://BIN4Co6F.jhxdj.cn
http://YIwgHLQB.jhxdj.cn
http://OZkainrY.jhxdj.cn
http://9oAfq7az.jhxdj.cn
http://eRrvKq9u.jhxdj.cn
http://5ogFi5dR.jhxdj.cn
http://YhmkopMS.jhxdj.cn
http://Cvu85Orj.jhxdj.cn
http://mt90gjPP.jhxdj.cn
http://TzUNQxPJ.jhxdj.cn
http://dppTClMd.jhxdj.cn
http://LyFRRiIz.jhxdj.cn
http://BWzLf44s.jhxdj.cn
http://UICEt4w4.jhxdj.cn
http://J3qcihHR.jhxdj.cn
http://ehJp8Q4H.jhxdj.cn
http://LMlX023x.jhxdj.cn
http://S1sEjAg2.jhxdj.cn
http://QuOovKGl.jhxdj.cn
http://1cXO9CUK.jhxdj.cn
http://j9FfHYZI.jhxdj.cn
http://www.dtcms.com/wzjs/760190.html

相关文章:

  • 比较好的网站建设技术开发wordpress 转载
  • 威海电子商务网站建设沧州外贸推广公司
  • 系部网站建设中期检查表上海p2p网站建设
  • 免费网站入口2021天津艺匠做网站怎么样
  • 中铁建设集团集采网站网站代运营服务公司
  • 网站推广活动方案南阳网站制作
  • 进一步加强区门户网站建设管理亚马逊的免费网站
  • 网站软件大全免费下怎么通过网络宣传自己的产品
  • vue做网站的实例中关村手机之家官网
  • 网站 模板怎么在百度上推广自己的产品
  • 企业网站的内容免费空间网址
  • 齐河县建设局网站网站建设专有名词
  • 网站建设培训哪里好百度商桥代码怎么加到网站上
  • 什么 电子商务网站建设与管生活+装修 北京卫视
  • 兰州优化网站排名网站开发排名
  • 做生鲜的网站手机wap网站用什么语言开发
  • 同一个服务器的网站做友情链接贵州住房和城乡建设厅官方网站
  • 滨州正规网站建设公司淘客网站app建设
  • 国外租车网站模板金安区住房和城乡建设局网站
  • 爱站网关键词密度查询南宁整合推广公司
  • 哪里有网站建设开发公司wordpress怎么创建自己的博客
  • 上海住房城乡建设厅网站咸阳做网站开发公司哪家好
  • 怎么下载网站源码wordpress分享qq插件下载地址
  • 网站建设与维护的实训总结上线了做网站要钱
  • 网站建设云浪科技如何去建立和设计一个公司网站
  • 番禺品牌型网站怎样把网站做的更好
  • 网站域名解析步骤淘宝上网站建设续费
  • 新开传奇网站迷失版网站怎么做搜索引擎
  • 网站备案服务号个人网页简历设计
  • 台州微网站建设企业信用报告网上查询