用GDI旋转bmp

最近拿到了爱国者照相机的sdk,东西有些粗糙,没有做成dll,代码全部公开。(不过程序还是写的蛮规范的)

由于,项目需求是要旋转90度预览,所以需要修改原先给的例子。稍稍读了一下源代码和找了一些例子。

源代码是从相机拿到一帧内容,转换成bmp格式,再由gdi显示。

而网上的例子都是用gdi+直接有图片旋转做的,要改当然可以,只是不想把原先的写法都破坏了。

还是想在gdi中直接实现。看来只能求助于msdn。

在msdn中果然找到了方法。mircosoft的帮助文档就是强啊。难怪用惯了微软的ide,用其他的就是感到别扭。

    XFORM xForm;
    xForm.eM11 = (FLOAT) 0.0;
    xForm.eM12 = (FLOAT) 1.0;
    xForm.eM21 = (FLOAT) 1.0;
    xForm.eM22 = (FLOAT) 0.0;
    xForm.eDx  = (FLOAT) 0.0;
    xForm.eDy  = (FLOAT) 0.0;
    SetWorldTransform(pDC->GetSafeHdc(), &xForm);
通过SetWorldTransform,把画布转了90度,这样原先正常的绘图功能都不用改,很是方便啊。

当然xForm不只是能做90度旋转,他其实是任何角度旋转的矩阵表。把原先的xy坐标映射成如下坐标:

SetWorldTransform PRE.clsCode { font-size:110%; } PRE.clsSyntax { font-size:100%; } TD DIV.clsBeta { display:none;} MSHelp/:link { color:#0000ff; text-decoration:underline; cursor:hand; hoverColor:#3366ff; filterString: ;}

x' = x 
* eM11 + y 
* eM21 + eDx, 
y' = x 
* eM12 + y 
* eM22 + eDy, 
这样,能就能做简单的图像转化了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值