MFC下图形任意角度旋转.

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

图形的旋转公式:

x1   =   (x - xcenter) *  cosθ - (y - ycenter)  * sinθ + xcenter; 

y1   =   (x - xcenter) *  sinθ +  (y- ycenter)  * cosθ + ycenter;

 

x, y:为原先点的坐标位置。

x1, y1旋转后点的坐标位置。

Xcenter, ycenter:为所绕的中心点的坐标

 

通过这个公式,可以利用SetWorldTransform()旋转图形

 

只有在图形模式被设置为GM_ADVANCED模式下该函数才能生效

int nGraphicsMode = SetGraphicsMode(hDc, GM_ADVANCED); 设置图形模式

XFORM xform;     // 保存旋转数据的结构体

 

函数按照下面的公式进行计算的:(MSDN中提供的)

 

x' = x * eM11 + y * eM21 + eDx, 
y' = x * eM12 + y * eM22 + eDy, 

 

因此结合一下旋转公式可以得出下面的赋值:

 

double fangle = (double)m_iAngle / 180. * 3.1415926;       // 计算弧度

xform.eM11 = (float)cos(fangle);

xform.eM12 = (float)sin(fangle);

xform.eM21 = (float)-sin(fangle);

xform.eM22 = (float)cos(fangle);

xform.eDx = (float)(centerPt.x - cos(fangle)*centerPt.x + sin(fangle)*centerPt.y);

xform.eDy = (float)(centerPt.y - cos(fangle)*centerPt.y - sin(fangle)*centerPt.x);

SetWorldTransform(hDc, &xform);

 

。。。绘图操作

 

// 恢复原先的模式

xform.eM11 = (float)1.0;

xform.eM12 = (float)0;

xform.eM21 = (float)0;

xform.eM22 = (float)1.0;

xform.eDx = (float)0;

xform.eDy = (float)0;

           

SetWorldTransform(hDc, &xform);

SetGraphicsMode(hDc, nGraphicsMode);    // 恢复图形模式

MFC下实现图形学之立方体平移、比例、旋转、投影变换算法 //*********************************//绘制坐标系以及初始立方体//*********************************void CTransGraphicsView::OnDraw(CDC* pDC){ CTransGraphicsDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); HBRUSH hbrus 阅读详情

相关推荐

C++实现图像任意角度旋转项目实战(基于MFC与OpenCV)

htmltable {th, td {th {pre {简介:在C++环境下,结合MFC框架与OpenCV库实现图像按任意角度旋转是一项典型的图像处理任务。本项目基于二维坐标变换原理,利用旋转变换矩阵对图像像素进行映射,并通过getRotationMatrix2D和warpAffine等函数完成图像旋转的完整流程。项目代码完整、可编译运行,包含图像读取、旋转矩阵构建、仿射变换应用及结果展示等环节,适用于学习MFC图形界面开发与OpenCV图像处理的集成应用。

weixin_42605397的博客 1101

(转)MFC中SetWorldTransform函数中XFORM结构体的使用

SetGraphicsMode   函数功能:该函数为指定的设备环境设置图形模式。   函数原型:int SetGraphicsMode(HDC hdc, int iMode);   参数:   hdc:指向设备环境的句柄。   iMode:指定图形模式,该参数可为下列值之一:   GM_COMPAIBLE:设置与16位Windows相兼容的图形模式,这是缺省的模式。如果指定此值,

gxj1680的专栏 3097

MFC实现旋转椭圆绘制的详细教程

MFC(Microsoft Foundation Classes)是一组封装了大部分Windows API的C++类库,旨在简化Windows应用程序的开发。它提供了一套面向对象的框架,使开发者能够利用面向对象的概念来操作Windows资源和组件。MFC不仅仅是一个简单的类库,它还包括了文档/视图结构、消息处理机制、UI控件等高级功能,对于快速开发Windows桌面应用程序提供了极大便利。

weixin_35257663的博客 693

MFC图片旋转

旋转函数 //hBitmap:要旋转位图的句柄 //radians : 旋转的角度(弧度) //clrBack :旋转时的背景颜色 //旋转图片函数 HBITMAP GetRotatedBitmap(HBITMAP hBitmap, float radians, COLORREF clrBack) { // Create a memory DC compatible with the display CDC sourceDC, destDC; sourceDC.CreateCompatible

GULINGSHI的博客 1968

MFC对话框里用GDI+做矩形的拖动、旋转和缩放演示工程

这个工程在标准MFC对话框环境下,用GDI+实现了一个可交互矩形对象:鼠标左键按住拖拽能自由移动位置;拖动右下角旋转手柄可实时绕中心旋转任意角度;滚轮配合Ctrl键或拖拽缩放手柄完成等比缩放。所有变换基于GDI+矩阵运算,坐标系处理、鼠标事件映射、图形状态(位置/角度/尺寸)持久化管理都已封装到位。源码包含完整VS201X解决方案(.sln/.vcxproj),含drawtestDlg.h/.cpp主对话框逻辑、资源脚本(.rc)、图标与配置文件,编译后直接生成drawtest.exe,附带PDB调试信息,

flink9streamer的博客 265

MFC 用C++实现图形的平移旋转缩放(带坐标轴)

计算机图形学MFC 基于C++实现图形的平移、旋转和缩放,含工程文件可直接运行,可以手动输入平移距离、旋转角度、缩放比例等。

利用MFC旋转BMP格式图片

最近工作中利用MFC实现图片旋转的任务,找遍了也没有一个合适的完整的解决方案,当然也是因为有的代码也确实因为自己看不懂,最终自己也是看了好多代码后,将代码融合了一下,最终能够满足自己的使用要求。 //旋转图片函数 HBITMAP GetRotatedBitmap(HBITMAP hBitmap, float radians, COLORREF clrBack) { // Create a mem...

weixin_43165699的博客 1328

Cimage加载图片,并实现旋转缩放功能

利用Cimage加载图片,并实现图片的旋转,缩放,vs2012下编译通过

MFC的CRectTracker类 重新实现及扩展

MFC的CRectTracker类 重新实现及扩展 去发现同类优质开源项目:https://gitcode.com/ 在此仓库中,我们提供了MFC中的CRectTracker类的重新实现和扩展版本——QTransformTracker类的资源文件下载。CRectTracker类是MFC库中非常受欢迎的一个类,它实现了矩形的“橡皮筋”效果。用户可以利用CRectTracker以多种方式交互式地对矩形...

gitblog_06705的博客 719

MFC多线程显示图片(vs2015)

MFC中多线程显示图片,避免在定时函数中显示导致的卡顿

在mfc中picture控件中显示Mat图片

将opencv中的Mat格式的图片显示在mfc中的picture控件上,该程序已经被放在了一个函数中间,只需调用该函数ShowMatImgToWnd(CWnd* pWnd, cv::Mat img)就可以将所需的图片显示在picture控件上了,其中CWnd* pWnd参数中输入picture控件的句柄,可使用GetDlgItem(IDC_picture)等方法获取(IDC_picture为picture控件的ID),Mat img参数即为你要显示Mat格式的图片。直接将函数放入程序中调用就可以使用,无需做任何改动,图片自适应你的picture控件的大小。

MFC用C++实现图形的平移旋转缩放带坐标轴资源文件介绍

MFC用C++实现图形的平移旋转缩放带坐标轴资源文件介绍 去发现同类优质开源项目:https://gitcode.com/ 项目的核心功能/场景:实现图形的平移、旋转、缩放,并提供坐标轴显示。 项目介绍 在现代计算机图形学领域,图形变换是一项基础而重要的技术。今天,我们将为您介绍一款基于MFC(Microsoft Foundation Classes)和C++语言的图形变换开源项目。该项目专注于图...

gitblog_06710的博客 569

MFC计算机图形学基本变换(平移、错切、对称、旋转、比例)

通过MFC实现计算机图形学中几个二维变换,不过都是写死的,不过可以当作案例启发哈。

MFC 用C++实现图形的平移旋转缩放(带坐标轴)资源文件介绍

MFC 用C++实现图形的平移旋转缩放(带坐标轴)资源文件介绍 去发现同类优质开源项目:https://gitcode.com/ 此资源文件是一份计算机图形学项目,基于MFC(Microsoft Foundation Classes)和C++语言,实现了图形的平移、旋转和缩放功能。项目包含完整的工程文件,可直接在支持MFC的IDE中运行。 功能简介 平移:可手动输入平移距离,对图形进行水平和垂直...

gitblog_06750的博客 331

从CPU视角看PCIe:深入理解x86/ARM平台上BAR、MMIO和PIO的地址翻译与访问机制

本文深入探讨了CPU如何通过BAR、MMIO和PIO机制访问PCIe设备的配置空间,详细解析了x86和ARM平台在地址翻译与访问路径上的差异。重点分析了PCIe配置空间中BAR寄存器的作用与探测机制,以及操作系统如何管理PCIe资源,为开发者提供了性能优化与调试的实用技巧。

weixin_30175731的博客 325

FDTD Solutions-入射波长模式

经常在文献中看到仿真光源使用TM/TE模式,这个确定是十分必要的,决定了仿真结果。 但是也不能局限于选择TM/TE,因为不同领域、不同软件之间的使用习惯和命名可能不同。并且在现代光波导器件中,几乎全部 都是混合模式,或者称之为quasi-TE(准TE模式)和quasi-TM(准TM模式),多数情况下都简称为TE模式和TM模式。要知道 到底是TE模式还是TM模式,需要查看其电场的主分量(即振幅...

HECHUANWANG的博客 1万+

MFC课设:图像操作(旋转、拖动、缩放、翻页)详细教程

一、环境配置 下面的操作是为了将项目属性设置成与我生成的Cximage文件夹里面的十四个项目属性一致 我将Cximage的库函数封装在一个文件夹Cximage中,如下: 在这里插入图片描述 这样再使用第三方库函数时就会非常方便,只需要通过路径访问相应的头文件和.lib文件即可使用相关的函数功能 可以在**Dlg.cpp文件中添加如下代码: //包含第三方头文件 #include "cximage\include\ximage.h" #pragma comment(lib,"cximage/lib/d

weixin_46295292的博客 6785

Stata: 空间面板数据模型及Stata实现

  作者:游万海 (福州大学) Stata 连享会: 知乎 | 简书 | 码云 | 优快云   来源:Golgher 和 Voss (2016)   1. 背景介绍 由于面板数据模型所具有的众多优点 (刻画个体异质性,减弱模型共线性和增加自由度等),其被广泛应用于实证计量中。在 「 Stata: 面板数据模型-一文读懂」 文中,我们已对面板数据模型进行了介绍。 然而,当研究样本涉及到多个...

Stata连享会 7万+

visio任意角度精确旋转图形

visio 2013 步骤: 选中图形 点击“视图->显示->任务窗格->大小和位置” 然后会出现一个小窗口,里面可以输入图形的旋转角度 转载于:https://www.cnblogs.com/qrlozte/p/5953179.html...

weixin_30325971的博客 377

STM32 FMC驱动AD7606实战:从硬件连接到时序调试全流程解析

本文详细解析了STM32 FMC驱动AD7606的全流程,包括硬件连接、FMC接口配置、驱动程序设计和时序调试。通过实战案例,展示了如何利用STM32的FMC总线实现与AD7606的高效数据传输,特别强调了电源设计、信号连接和PCB布局等关键要点,为嵌入式数据采集系统开发提供了实用指导。

aa123的博客 1005

Fast DDS源代码走读

DDS, PDP, EPD, DataWriter, DataReader

weixin_43082062的博客 713

MFC的CRectTracker类重新实现及扩展:项目推荐文章

MFC的CRectTracker类重新实现及扩展:项目推荐文章 去发现同类优质开源项目:https://gitcode.com/ 项目核心功能/场景 基于MFC的CRectTracker类重新实现及扩展,提供更灵活的图形对象操作。 项目介绍 在现代软件开发中,图形用户界面(GUI)的交互性至关重要。MFC(Microsoft Foundation Classes)作为一套强大的C++库,被广泛应用...

gitblog_06765的博客 881

一种基于因果干预的少样本学习的故障诊断模型

本文提出CIRNet,一种融合元学习与因果干预的少样本故障诊断框架。针对传统方法易学习伪相关特征的问题,CIRNet通过构建结构因果模型,采用类级和特征级双调整策略消除先验知识干扰。实验在多个轴承/齿轮数据集上验证其有效性,在跨组件任务中准确率最高达93.41%,特征可视化显示更好的类可分性。相比现有方法,CIRNet显著提升了模型泛化能力和可解释性。

hasakie的博客 957
上一篇: 几道C的基础题解答不一定对有错忘纠正!
下一篇: MFC菜单自绘制
WowBanyan
博客等级 码龄18年 5粉丝 33原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值