用BitBlt旋转图片2

MFC SetWorldTransform()旋转图片90度只有半张图 今天接到一个把图片旋转90、180、270度的任务,在MSDN搜索一下,找到许多参考例程,代码也简单,很快就把代码写好了。把图片保存到硬盘,发现旋转90度的图片只有半张图! 阅读详情

条条大道通罗马,这是我学程序的最大感受。任何问题都有多种解决方法。上次说的旋转图片算法,如果实际测试,就会发现,图片旋转一定角度会变花,出现白点。这是因为屏幕坐标是整数,而旋转公式的结果却是浮点数,在转换中,出现误差。怎样解决呢?

用数学公式来纠正误差?不需要。

原来的绘制是这样的:

BitBlt(hdc,destx+200,desty+200,1,1,hdcmem,i,j,SRCCOPY);

修改如下,每次绘制两个像素。即:

BitBlt(hdc,destx+200,desty+200,2,1,hdcmem,i,j,SRCCOPY);

仅仅如此,图片的白点消除了。

代码:

   SelectObject(hdcmem, hBm);//选入DC
   for(i=0;i<64;i++)
   {
            for(j=0;j<64;j++)
            {
                     //计算旋转后的坐标
                     destx=i*cos(angle*3.1415/180)-j*sin(angle*3.1415/180);
                     desty=i*sin(angle*3.1415/180)+j*cos(angle*3.1415/180);
                     //绘制两个像素到屏幕上(图片移动到200,200的位置)
                     BitBlt(hdc,destx+200,desty+200,2,1,hdcmem,i,j,SRCCOPY);
            }   
   }

c#学习(2):大图片的特效处理与获取屏幕上任一点的rgb值 这里的大图片是指3M左右的图片,笔者所做的图片特效大约分为两种,一种是通过picturebox控件的变换而实现的,这类特效较为简单,其效率与图片本身并无关系;第二类是通过数值计算,利用计时器控制图片像素的显示,分块显示图片,例如百叶窗特效,旋转特效,马赛克特效等,这类特效的效率与图片本身的大小有很大关系。下边通过百叶窗的实现详细讲述一下如何高效的实现此类特效。           首先,打开一 阅读详情

相关推荐

MFC图像旋转功能实现教程:初学者入门指南

CDC类是MFC中的一个非常重要的类,它提供了一个与Windows GDI接口相对应的对象。在MFC中,几乎所有与GDI相关的绘图操作都要依赖于CDC类或其派生类。CDC类封装了Windows的设备上下文句柄(HDC),使得在进行设备上下文操作时,不必直接处理复杂的句柄操作。BitBlt函数是Windows GDI中的一个位块传输函数,用于将一块内存中的图像复制到另一个地方,通常是从一个设备上下文复制到另一个设备上下文。它支持许多不同的位图格式,包括单色、16位、24位和32位图像。

weixin_42609225的博客 728

图片转场技巧与过渡特效编程实现详解

控件名称功能描述PictureBox用于显示图像,支持多种图像格式,适合图像转场演示Timer控制动画播放节奏,实现定时刷新触发转场效果、开始/停止动画ComboBox选择不同的转场类型Label显示状态信息、帧率等调试信息通过本章内容,我们掌握了在VB环境中使用窗体与控件实现图像转场特效的基本方法。包括:窗体布局设计与控件配置PictureBox控件的图像显示与刷新机制Timer控件控制动画节奏。

weixin_36122351的博客 692

利用BitBlt实现位图旋转

一个关于旋转位图很好的例子.其中主要的一步是RotateMemDC,将当前的DC打入内存,并计算得出旋转后位图的信息,并显示.

VB6实现PictureBox图片快速90度旋转处理

使用VB6,调用Win API,实现PictureBox图片快速90度旋转处理。

C++中BitBlt的使用方法详解

BitBlt 该函数对指定的源设备环境区域中的像素进行位块(bit_block)转换,以传送到目标设备环境。 原型:   BOOL BitBlt( HDC hdcDest, int nXDest, int nYDest, int nWidth, int nHeight, HDC hdcSrc, int nXSrc, int nYSrc, DWORD dwRop); 参数:    hdcDest:指向目标设备环境的句柄。 nXDest、nYDest:指定目标矩形区域左上角的X轴和Y轴逻辑坐标 nWidth、nHeight:指定源和目标矩形区域的逻辑宽度和逻辑高度。 hdc

Win11显卡驱动安装失败的全面解决方案

Windows 11显卡驱动安装失败是一个比较常见的问题,但通过上述方法,我们可以有效地解决这一问题。方法一通过调整组策略编辑器的驱动程序安装策略,可能解决一些因签名问题导致的安装失败;而方法二则通过重装Windows 11系统,为系统提供一个全新的、干净的环境,从而可能解决更复杂的安装问题。在实际操作中,用户可以根据具体情况选择合适的方法来解决显卡驱动安装失败的问题。

nntxthml的博客 2662

AI编程助手Cursor如何革新经济学研究:从计量模型到可视化全流程实战

在数据科学和人工智能技术蓬勃发展的今天,如何高效地将前沿AI工具融入专业领域的研究工作流,成为提升科研效率的关键。其核心原理在于通过自然语言交互,将研究者的专业问题转化为机器可执行的指令,从而实现人机协作的范式转移。这一技术的核心价值在于大幅降低非计算机背景研究者的编程门槛,将精力从繁琐的代码实现中解放出来,更聚焦于学科本身的思想与逻辑。尤其在经济学、金融学等高度依赖数据分析和计量建模的领域,AI编程助手能够快速处理数据清洗、模型估计、可视化及结果解释等任务。具体到应用场景,研究者可以利用结构化提示词工程,

weixin_42531579的博客 296

OTP语音芯片SOP8的前世今生_如九齐_硕呈_钰绅等以及国产方案KT148A

语音芯片ic的其中一个品类,就是SOP8封装的OTP语音芯片,非常的经典和常用。源头的供应商基本都是台系的原厂,比如:九齐、硕呈、佑华等等,其中佑华就算是鼻祖了,早期的4位机也是在语音市场得到了升华。 OTP(One Time Programmable)是单片机的一种存储器类型,意思是一次性可编程:程序烧入单片机后,将不可再次更改和清除。

qyvhome的博客 1873

5090D显卡安装LLaMA-Factory避坑指南:PyTorch与CUDA版本兼容性问题解决

本文是针对5090D显卡安装LLaMA-Factory时遇到的PyTorch与CUDA版本兼容性问题的详细解决指南。文章深入剖析了因GPU架构代际差异导致的“no kernel image”报错根源,并提供了从环境诊断、安装匹配的PyTorch Nightly版本,到最终集成验证的完整路径,帮助用户确保LLaMA-Factory在5090D上稳定运行。

Apple的专栏 868

【交易系统系列27】带你看懂订单的“奇幻漂流”

作为一个在交易所后台“厨房”里摸爬滚打了十多年的老兵,我将用一杯手冲咖啡的时间,带你亲历一次完整的订单“奇幻漂流”。本文将用一个“奶爸”的生活视角,硬核拆解**撮合(Matching)**、**清算(Clearing)**、**结算(Settlement)**和**出入金**这四大核心环节。这不仅是一次对**交易系统优化**和**撮合引擎架构**的深度剖析,更是一场关于传统金融与数字金融两种不同“上菜”哲学的真实故事。

weixin_43988453的博客 406

简单易懂的AXI_Lite 总线详解

简单易懂的AXI_Lite 总线详解 1、前言 AXI_LITE协议主要应用于Xilinx的ZYNQ芯片构架下的ARM和FPGA之间的数据读写,更偏向于单个寄存器的读写。 2、AXI总线与ZYNQ的关系 AXI(Advanced eXtensible Interface)本是由ARM公司提出的一种总线协议,Xilinx从6系列的FPGA开始对AXI总线提供支持,此时AXI已经发展到了AXI4这个版本,所以当你用到Xilinx的软件的时候看到的都是“AIX4”的IP,如Vivado打包一个AXI IP的时候,

m0_46642108的博客 8494

Adams软件安装与配置全攻略:从入门到机器人仿真

机械系统动力学仿真软件Adams是工业机器人开发的重要工具,其安装过程涉及许可证配置、环境变量设置等关键技术环节。专业仿真软件安装通常需要处理系统兼容性、组件依赖和授权验证等工程问题,特别是在机器人控制仿真等场景中,还需集成MATLAB/Simulink等第三方工具。本文以Windows平台为例,详解Adams安装的核心步骤,包括系统环境检查、许可证服务器配置、工业机器人专项模块安装等实践要点,并针对NVIDIA Quadro显卡优化、27500端口通信等常见问题提供解决方案,帮助用户快速搭建可靠的仿真环境

weixin_28523493的博客 199

Java SSH框架学习

Java SSH框架学习

私信可回答各种问题~ 1789

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

上一篇: BitBlt举例和图形旋转
下一篇: CS快速过关
programking
博客等级 码龄23年 450粉丝 140原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值