zoukankan      html  css  js  c++  java
  • Direct2D DirectWrite绘制文字

    绘制文本使用DirectWrite

    为了简化 DirectWrite 的使用,RenderTarget有3个方法可以直接绘制文本:

    写一个简单的例子:
    别忘了头文件和lib
    #include "wincodec.h"
    dwrite.lib;
    下面的是d2d必须的
    d2d1.lib;
    dxgi.lib;
    dxguid.lib;

    创建文本的流程如下:
    类似于,还是需要一个Factory,只不过这次是:
    1. IDWriteFactory。然后初始化。
    2. 然后创建文本格式,包括字体,字号等。
    3. 设置绘制布局。
    4. 绘制。

    pRenderTarget->BeginDraw();
    
    	IDWriteFactory* pDWriteFactory = NULL;
    	IDWriteTextFormat* pTextFormat = NULL;
    
    	// create dwrite factory
    	DWriteCreateFactory(
    		DWRITE_FACTORY_TYPE_SHARED,
    		__uuidof(IDWriteFactory),
    		reinterpret_cast<IUnknown**>(&pDWriteFactory));
    
    	//create text format
    	hr = pDWriteFactory->CreateTextFormat(
    		L"Arial", 
    		NULL,
    		DWRITE_FONT_WEIGHT_NORMAL, 
    		DWRITE_FONT_STYLE_NORMAL, 
    		DWRITE_FONT_STRETCH_NORMAL, 
    		20.0f * 96.0f/72.0f, 
    		L"en-US", 
    		&pTextFormat
    		);
    
    	D2D1_RECT_F layoutRect = D2D1::RectF(1000.f, 1000.f, 200.f, 200.f);
    
    	//draw text
    	pRenderTarget->DrawText(
    		L"Hello D2D",
    		wcslen(L"Hello D2D"),
    		pTextFormat,
    		layoutRect, 
    		pBlackBrush
    		);
    
    	pRenderTarget->EndDraw();

    更多介绍MSDN
  • 相关阅读:
    bzoj4196: [Noi2015]软件包管理器
    bzoj3083: 遥远的国度
    bzoj4034: [HAOI2015]T2
    2.EXIT_KEY
    AD如何1比1打印
    编程时注意,
    同步事件、异步事件、轮询
    事件位
    挂起进程相关API
    PROCESS_EVENT_POLL事件
  • 原文地址:https://www.cnblogs.com/aukle/p/3223599.html
Copyright © 2011-2022 走看看