转自:http://blog.csdn.net/augusdi/article/details/9040177

 Using Bitmap Brushes

Direct2D 中的图片处理增加了很多的灵活的特性,现在的Direct2D可以很好的和GUI,GUI+以及Direct3D混合使用,它支持更多的图形格式,更丰富的绘制方法。使用Direct2D绘制的win7程序,显示效果更好,绘制速度更快。

  1. LRESULT InItD2D(HWND hWnd)
  2. {
  3. //创建一个Direct2D资源指针
  4. HRESULT hr = D2D1CreateFactory(D2D1_FACTORY_TYPE_SINGLE_THREADED, &pD2DFactory);
  5. CoInitialize(NULL);
  6. hr = CoCreateInstance(
  7. CLSID_WICImagingFactory,
  8. NULL,
  9. CLSCTX_INPROC_SERVER,
  10. IID_PPV_ARGS(&p_pImageFactory)
  11. );
  12. if(SUCCEEDED(hr))
  13. {
  14. // Create a DirectWrite factory.
  15. hr = DWriteCreateFactory(
  16. DWRITE_FACTORY_TYPE_SHARED,
  17. __uuidof(p_pDWriteFactory),
  18. reinterpret_cast<IUnknown **>(&p_pDWriteFactory)
  19. );
  20. }
  21. if (SUCCEEDED(hr))
  22. {
  23. // Create a DirectWrite text format object.
  24. hr = p_pDWriteFactory->CreateTextFormat(
  25. L"微软雅黑",
  26. NULL,
  27. DWRITE_FONT_WEIGHT_DEMI_BOLD,
  28. DWRITE_FONT_STYLE_NORMAL,
  29. DWRITE_FONT_STRETCH_ULTRA_EXPANDED,
  30. 24,
  31. L"MyFont", //locale
  32. &p_pText
  33. );
  34. }
  35. if (SUCCEEDED(hr))
  36. {
  37. // Center the text horizontally and vertically.
  38. p_pText->SetTextAlignment(DWRITE_TEXT_ALIGNMENT_CENTER);
  39. p_pText->SetParagraphAlignment(DWRITE_PARAGRAPH_ALIGNMENT_CENTER);
  40. }
  41. // Obtain the size of the drawing area.
  42. GetClientRect(hWnd, &rc);
  43. // Create a Direct2D render target
  44. hr = pD2DFactory->CreateHwndRenderTarget(D2D1::RenderTargetProperties(),
  45. D2D1::HwndRenderTargetProperties(hWnd,D2D1::SizeU(rc.right - rc.left, rc.bottom - rc.top)),
  46. &p_pRenderTarget);
  47. //从资源中载入一张图片
  48. //LoadResourceBitmap(p_pRenderTarget,   p_pImageFactory,MAKEINTRESOURCE(IDR_JPG1),L"jpg",&p_pBitmap);
  49. //从硬盘上载入一张图片
  50. LoadBitmapFromFile(p_pRenderTarget,p_pImageFactory,L"car.jpg",0,0,&p_pBitmap);
  51. // 设置笔刷
  52. if (SUCCEEDED(hr))
  53. {
  54. p_pRenderTarget->CreateSolidColorBrush(D2D1::ColorF(D2D1::ColorF::Black),&p_pBlackBrush);
  55. p_pRenderTarget->CreateBitmapBrush(  p_pBitmap ,&p_pBitmapBrush  );
  56. }
  57. return hr;
  58. }

其中IWICImagingFactory类提供了一个高效的图形绘制接口

  1. hr = CoCreateInstance(
  2. CLSID_WICImagingFactory,
  3. NULL,
  4. CLSCTX_INPROC_SERVER,
  5. IID_PPV_ARGS(&p_pImageFactory)
  6. );

还有两个函数LoadResourceBitmap()和LoadBitmapFromFile()都是载入图片的函数,这两个函数可以载入我们常见的图片格式,要研究这一块的内容,估计一时半会说不明白,微软现在已经通过类似于控件的方式提供了多种图片的载入方式,目前直接支持的有jpg,bmp,gif,png等。还可以按照自己的解析器来完成自己需要图片格式的读写~

    1. VOID Render()
    2. {
    3. if(!p_pRenderTarget)
    4. return ;
    5. static const WCHAR szBitmapBrushText[] = L"图片笔刷";
    6. // Define the shape of rectangles to be filled with brushes.
    7. D2D1_RECT_F rcBrushRect = D2D1::RectF(0, 0, 470, 613);
    8. // Define the area where captions are drawn.
    9. D2D1_RECT_F rcTextRect = D2D1::RectF(0, 1065, 450, 200);
    10. p_pRenderTarget->BeginDraw();
    11. p_pRenderTarget->SetTransform(D2D1::Matrix3x2F::Identity());
    12. p_pRenderTarget->Clear(D2D1::ColorF(D2D1::ColorF::White));
    13. // Translate for the bitmap brush.
    14. p_pRenderTarget-

direct2D图片处理的更多相关文章

  1. Direct2D WIC绘制图片

    绘制图片需要用到WIC,WIC的功能包括: 编解码图片.也可以自定义图片解码插件. 读取图片元数据. 图像处理(最高支持每通道32位). 内置支持一些流行的格式.包括:BMP v5, GIF 89a/ ...

  2. UWP中的Direct2D

    介绍 DirectX一直是Windows平台中高性能图形的代名词,自Win7开始,微软又推出了Direct2D技术,包装于Direct3D,但专注于2D图形,并且准备取代GDI这样的传统2D图形技术. ...

  3. Direct2D开发:纹理混合

    转载请注明出处:http://www.cnblogs.com/Ray1024 一.概述 我们都知道Direct2D可以加载并显示图片,但是不知道你有没有想过,这个2D的图形引擎可以进行纹理混合吗?如果 ...

  4. Direct2D开发:从资源加载位图

    转载请注明出处:http://www.cnblogs.com/Ray1024 一.概述 Direct2D使用Windows图像处理组件 (WIC) 来加载位图.从文件加载位图的方法很简单,而且网上的教 ...

  5. 杂谈SharpDx中的WIC组件——我们需要WIC的图片编码功能么?

    在前文 SharpDX之Direct2D教程II——加载位图文件和保存位图文件 中,发现在VB2010中不能很好的运用SharpDx中的WIC组件进行图片的编码工作.可能是我的设置问题,也可能是Sha ...

  6. SharpDX之Direct2D教程II——加载位图文件和保存位图文件

    本系列文章目录: SharpDX之Direct2D教程I——简单示例和Color(颜色) 绘制位图是绘制操作的不可缺少的一部分.在Direct2D中绘制位图,必须先利用WIC组件将位图加载到内存中,再 ...

  7. C# 使用 Direct2D 实现斜角效果

    Direct2D 是微软新的二维图形 API,可为二维几何图形.位图和文本提供高性能和高质量的呈现.Direct2D 支持硬件加速,无论是绘制速度还是绘制质量,Direct2D 都要比 GDI 和 G ...

  8. Direct2D 简介

    Direct2D是什么? Direct2D是一套高性能的硬件加速API(代码运行在GPU),用于渲染几何图形,图片和文本,并且可以与Direct3D,GDI,GDI+交互. 什么程序员应该使用Dire ...

  9. Direct2D 几何图形绘制基础

    之前说过,D2D主要为了绘制有三种类型的数据:几何图形,图片,文字.这几种对象也叫做资源,资源就是要D2D流水线中要被加工的对象. 几何图形包括: 简单几何图形 直线,DrawLine,由起点和终点构 ...

随机推荐

  1. 正确使用iOS常量(const)、enum以及宏(#define)

    前言:本文主要梳理iOS中如何使用常量.enum.宏,以及各自的使用场景. 重要的事情首先说:在iOS开发中请尽量多使用const.enum来代替宏定义(#define):随着项目工程的逐渐增大,过多 ...

  2. phalcon: dispatcher->forward地址转发/重定向

    比如,我indexController里面的indexAction,因为用户没有穿参数,我要重定向到 errorAction里面 $this->dispatcher->forward(ar ...

  3. UML中的组合、聚合、关联、继承、实现、依赖

    转自:http://justsee.iteye.com/blog/808799 UML定义的关系主要有六种:依赖.类属.关联.实现.聚合和组合. 继承 指的是一个类(称为子类.子接口)继承另外的一个类 ...

  4. 自已开发完美的触摸屏网页版仿app弹窗型滚动列表选择器/日期选择器

    手机端网页版app在使用下拉列表时,传统的下拉列表使用起来体验非常不好,一般做的稍好一点的交互功能界面都不会直接使用下拉列表,所以app的原生下拉列表都是弹窗列表选择,网页型app从使用体验上来当然也 ...

  5. 《深入理解mybatis原理2》 Mybatis初始化机制详解

    <深入理解mybatis原理> Mybatis初始化机制详解 对于任何框架而言,在使用前都要进行一系列的初始化,MyBatis也不例外.本章将通过以下几点详细介绍MyBatis的初始化过程 ...

  6. opencv 图片降噪

    —— # -*- coding: utf-8 -* import numpy as np import cv2 cap = cv2.VideoCapture(0) while True: _ , fr ...

  7. Python flask网站部署总结

    先开一贴,有空来总结下前段时间的网站部署情况.此次部署采用Gunicorn + Nginx + supervisor的组合在VPS环境中部署flask网站应用. Ubuntu环境准备 准备python ...

  8. 面向对象:三大特性、类成员、property

    一.类的基础知识 python 一切皆为对象. 我们以前的str,list,int 都是对象. 1.1 类的定义 与 调用 class 关键字用来定义类,注意类名首字母大写. 类的调用,先实例化一个类 ...

  9. hystrix -hystrixCommand配置介绍

    public @interface HystrixCommand { // HystrixCommand 命令所属的组的名称:默认注解方法类的名称 String groupKey() default ...

  10. djagno重写authenticate实现帐号和邮箱的多方式登录。

    1.在users应用的view中重写authenticate: from django.contrib.auth.backends import ModelBackend from django.db ...