drawtext问题,怎么样能让画出来的字体大小可随窗口伸缩

shanyang1 2010-01-07 06:02:58
drawtext问题,怎么样能让画出来的字体大小可随窗口伸缩
...全文
450 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
leechrockgames 2010-01-07
  • 打赏
  • 举报
回复

#include"ENfont.h"


void ENfont::LHxxINITFONT(HFONT &font,LPCTSTR name,int width, int height)
{

font = CreateFont( height, // 字符高度(逻辑单位)
width, // 字符宽度(逻辑单位) 0为自动匹配
0, // 字符行角度
0, // 字符基线角度
400, // 0--1000 字体浓暗程度, 400为正常的
FALSE, // 是否为斜体字
FALSE, // 是否加下划线
0, // 是否加中划线
GB2312_CHARSET, // 指定字符集
OUT_DEFAULT_PRECIS, // 指定输出精度
CLIP_DEFAULT_PRECIS, // 指定剪切精度
DEFAULT_QUALITY, // 指定输出质量
DEFAULT_PITCH|FF_SWISS, // 指定间距, 字体族
name // 字体名
);
}


//Ddraw专用
void ENfont::LHxxDRAWFONT( HFONT &font,COLORREF RGB_value,char *info,int x,int y)
{
HDC hdc;
lpddsback->GetDC(&hdc);
SetBkMode(hdc, TRANSPARENT);
SelectObject( hdc, font );//选择字体

SetTextColor(hdc, RGB_value);
TextOut(hdc, x, y, info, strlen(info));
lpddsback->ReleaseDC(hdc);

}




void ENfont::LHxxSHOW_GDITEXT(HFONT &font,D3DXCOLOR RGB_back,COLORREF RGB_value,char *info,int x,int y)
{
//isalnum(window_char_message);
HDC hdc;
// get the dc
hdc = GetDC(hWnd);
// set the color
SetBkMode(hdc,OPAQUE);
SelectObject( hdc, font );//选择字体

SetTextColor(hdc,RGB_value);
//1.0f:不用底透明色,即:底为黑色;0.0f:则用底色
//色排列为:BGR.
//RGB_back D3DXCOLOR(200,100,100,1.0f);
SetBkColor(hdc,RGB_back);


// SetBkColor(hdc,D3DCOLOR_RGBA(0,0,0,0));
// print the message
TextOut(hdc,x,y,info,strlen(info));
// release the dc
ReleaseDC(hWnd,hdc);

}



void ENfont::LHxxFREEFONT(HFONT &font)
{
DeleteObject(font);
}






void ENfont::LHxxCREATE_FONT(LPD3DXFONT &m_pFont,int size_w,int size_h,char *name)
{
HDC hDC = GetDC( NULL );
ReleaseDC( NULL, hDC );
D3DXCreateFont( m_pd3dDevice, // D3D device
size_h, // Height
size_w, // Width
0, // Weight 0 FW_BOLD
0, // MipLevels, 0 = autogen mipmaps
FALSE, // Italic
DEFAULT_CHARSET, // CharSet
OUT_DEFAULT_PRECIS, // OutputPrecision
DEFAULT_QUALITY, // Quality
DEFAULT_PITCH | FF_SWISS, // PitchAndFamily FF_SWISS FF_DONTCARE
TEXT(name), // pFaceName TEXT("Arial")黑体
&m_pFont); // ppFont
// Restore the fonts
m_pFont->OnResetDevice();
}


void ENfont::LHxxSHOW_CHINATEXT(LPD3DXFONT &pFont,char *info,D3DXCOLOR RGB_value,int x,int y)
{
RECT rc;
SetRect( &rc, x, y, 0, 0 );
pFont->DrawText( NULL,info, -1, &rc, DT_NOCLIP,RGB_value);
// pFont->DrawText( NULL,info, -1, &rc, DT_NOCLIP, D3DXCOLOR( r, g, b, 1.0f ));
}




void ENfont::LHxxFREE_FONT(LPD3DXFONT &m_pFont)
{
if(m_pFont)
{
SAFE_DELETE( m_pFont );
}
}

shanyang1 2010-01-07
  • 打赏
  • 举报
回复
我看vc的帮助上有truetype类型的字体是向量字体,应该是可以收缩的把
sb3day 2010-01-07
  • 打赏
  • 举报
回复
动态创建字体,窗口OnSize()改变的时候m_Size也改变
	 CFont* hFont=new CFont;
hFont->CreateFont(m_Size,0,0,0,
FW_DONTCARE,
0,
0,
0,
DEFAULT_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH|FF_SWISS,
_T("宋体"));

CFont* hOldFont = pDC->SelectObject(hFont);
delete hFont;
许文君 2010-01-07
  • 打赏
  • 举报
回复
获取窗口大小然后重绘
xwsn007 2010-01-07
  • 打赏
  • 举报
回复
...
SuperLy 2010-01-07
  • 打赏
  • 举报
回复
1、根据窗口大小计算合适的字体,然后在绘制前修改字体大小
2、根据窗口大小使用BitBlt()缩放拷贝到目标HDC
内容概要:本文围绕城市场景下的无人机三维路径规划问题,提出了一种新颖的多目标粒子群优化算法(NMOPSO),旨在解决高维复杂环境中路径规划面临的多重挑战。研究聚焦于导航变量的多目标优化,构建了一个包含路径长度、飞行安全性、能量消耗等多个相互冲突目标的优化模型,并采用改进的粒子群算法进行高效搜索,最终获得一组Pareto最优解集,为实际决策提供多样化路径选择方案。该方法结合Matlab代码实现,详细阐述了算法的设计机制、数学建模流程及仿真验证过程,充分展示了其在密集城市建筑环境中有效规避障碍物、满足飞行动力学约束并实现多目标权衡的能力,具有较强的工程应用价值。; 适合人群:具备一定优化算法理论基础和Matlab编程能力,从事无人机路径规划、智能交通系统、自动化控制、人工智能应用等方向研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于城市环境中的无人机物流配送、巡检监控、应急救援等实际任务的三维路径规划;②为高维、非线性、多约束的多目标优化问题提供有效的算法设计思路与改进参考;③通过Matlab仿真平台复现算法,进一步开展性能测试、参数调优与算法对比研究,推动相关领域的技术创新。; 阅读建议:此资源强调算法原理与工程实践的深度融合,建议读者重点研读目标函数的构建方式、约束条件的处理策略以及NMOPSO算法的核心改进机制,并务必动手运行和调试所提供的Matlab代码,以深入理解算法在三维空间路径优化中的具体实现细节与实际表现。

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧