怎样在视输出旋转样式的文字!!!!!!!!!!! 怎样在视输出旋转样式的文字!!!!!!!!!!!只需知道旋转角度, 文本即可再视里输出旋转一定角度的文字 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://www2.cnnb.net/personal/binhua/chinese/programs/vc/document/tips/control.htm 这是一段产生旋转样式的文字的代码:主要函数为 font.CreatePointFontIndirect (&lf); CRect rect; GetClientRect (&rect); CPaintDC dc (this); dc.SetViewportOrg (rect.Width () / 2, rect.Height () / 2); dc.SetBkMode (TRANSPARENT); for (int i=0; i<3600; i+=150) { LOGFONT lf; ::ZeroMemory (&lf, sizeof (lf)); lf.lfHeight = 160; lf.lfWeight = FW_BOLD; lf.lfEscapement = i; lf.lfOrientation = i; ::lstrcpy (lf.lfFaceName, _T ("Arial")); CFont font; font.CreatePointFontIndirect (&lf); CFont* pOldFont = dc.SelectObject (&font); dc.TextOut (0, 0, CString (_T (" Hello, MFC"))); dc.SelectObject (pOldFont); } 显示旋转文本:http://www.vckbase.com/vckbase/vckbase1/axvckb.htm 在Programing MFC中有,代码如下:void CMainWindow::OnPaint (){ CRect rect; GetClientRect (&rect); CPaintDC dc (this); dc.SetViewportOrg (rect.Width () / 2, rect.Height () / 2); dc.SetBkMode (TRANSPARENT); for (int i=0; i<3600; i+=150) { LOGFONT lf; ::ZeroMemory (&lf, sizeof (lf)); lf.lfHeight = 160; lf.lfWeight = FW_BOLD; lf.lfEscapement = i; lf.lfOrientation = i; ::lstrcpy (lf.lfFaceName, _T ("Arial")); CFont font; font.CreatePointFontIndirect (&lf); CFont* pOldFont = dc.SelectObject (&font); dc.TextOut (0, 0, CString (_T (" Hello, MFC"))); dc.SelectObject (pOldFont); }} CFont m_Font; m_Font.CreateFont(25, 25, 300, 0, 300, // 看看msdn FALSE, FALSE, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH|FF_SWISS, _T("Arial") ); m_Text.SetFont(&m_Font); m_Text.SetWindowText(" yes I can ! "); 文本的显示方式,包括旋转,都是由字体来设置的。字体的属性主要由创建字体时使用的LOGFONT结构规定,该结构中的lfEscapement域指定了文本行与X轴(水平轴)的角度,其角度单位是十分之一度。为了是所有的字体向相同的方向旋转,还应同时将OGFONT结构的lfClipPrecision域设为CLIP_LH_ANGLES。 下面的代码将在对话框中显示在同一起点每隔15度显示一行文本: void CRotateTextDlg::OnPaint() { CPaintDC dc(this); // device context for painting if (IsIconic()) { SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); // Center icon in client rectangle int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // Draw the icon dc.DrawIcon(x, y, m_hIcon); } else { CRect rc; GetClientRect(rc); CString str(_T("............旋转文本!")); dc.SetBkMode(TRANSPARENT); dc.SetTextColor(RGB(0,0,255)); CFont font; LOGFONT lf; memset(&lf,0,sizeof(LOGFONT)); lf.lfHeight = -14; lf.lfWeight = FW_NORMAL; lf.lfClipPrecision = CLIP_LH_ANGLES; strcpy(lf.lfFaceName, "宋体"); for (int i=0;i<3600;i+=150) { lf.lfEscapement = i; font.CreateFontIndirect(&lf); CFont *pOldFont = dc.SelectObject(&font); dc.TextOut(rc.right/2, rc.bottom/2,str); dc.SelectObject(pOldFont); font.DeleteObject(); } CDialog::OnPaint(); } } 利用图像采集卡给的sdk包进行图像处理,出现如下问题 求 Microsoft Visual Studio\VC98\CRT\SRC 文件夹 如何收到任务栏隐藏和显示的消息??? aximp 这个命令怎么使用? 如何连接外网即时通信? 实际亮度值转化为灰度值,有什么算法? 怎么判断一个字符串里哪些字符为汉字哪些为英文字母? 关于俺在wm_paint里画东西的问题 如何得到系统所有已经运行程序的HWND 字体覆盖问题 怎样获得视图指针? mfc中窗口与视口的区别
CRect rect;
GetClientRect (&rect); CPaintDC dc (this);
dc.SetViewportOrg (rect.Width () / 2, rect.Height () / 2);
dc.SetBkMode (TRANSPARENT); for (int i=0; i<3600; i+=150) {
LOGFONT lf;
::ZeroMemory (&lf, sizeof (lf));
lf.lfHeight = 160;
lf.lfWeight = FW_BOLD;
lf.lfEscapement = i;
lf.lfOrientation = i;
::lstrcpy (lf.lfFaceName, _T ("Arial")); CFont font;
font.CreatePointFontIndirect (&lf); CFont* pOldFont = dc.SelectObject (&font);
dc.TextOut (0, 0, CString (_T (" Hello, MFC")));
dc.SelectObject (pOldFont);
}
http://www.vckbase.com/vckbase/vckbase1/axvckb.htm
{
CRect rect;
GetClientRect (&rect); CPaintDC dc (this);
dc.SetViewportOrg (rect.Width () / 2, rect.Height () / 2);
dc.SetBkMode (TRANSPARENT); for (int i=0; i<3600; i+=150) {
LOGFONT lf;
::ZeroMemory (&lf, sizeof (lf));
lf.lfHeight = 160;
lf.lfWeight = FW_BOLD;
lf.lfEscapement = i;
lf.lfOrientation = i;
::lstrcpy (lf.lfFaceName, _T ("Arial")); CFont font;
font.CreatePointFontIndirect (&lf); CFont* pOldFont = dc.SelectObject (&font);
dc.TextOut (0, 0, CString (_T (" Hello, MFC")));
dc.SelectObject (pOldFont);
}
}
m_Font.CreateFont(25, 25, 300, 0, 300, // 看看msdn
FALSE, FALSE, 0,
ANSI_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH|FF_SWISS,
_T("Arial")
);
m_Text.SetFont(&m_Font);
m_Text.SetWindowText(" yes I can ! ");
CLIP_LH_ANGLES。
下面的代码将在对话框中显示在同一起点每隔15度显示一行文本: void CRotateTextDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
if (IsIconic())
{
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CRect rc;
GetClientRect(rc);
CString str(_T("............旋转文本!"));
dc.SetBkMode(TRANSPARENT);
dc.SetTextColor(RGB(0,0,255));
CFont font;
LOGFONT lf;
memset(&lf,0,sizeof(LOGFONT));
lf.lfHeight = -14;
lf.lfWeight = FW_NORMAL;
lf.lfClipPrecision = CLIP_LH_ANGLES;
strcpy(lf.lfFaceName, "宋体");
for (int i=0;i<3600;i+=150)
{
lf.lfEscapement = i;
font.CreateFontIndirect(&lf);
CFont *pOldFont = dc.SelectObject(&font);
dc.TextOut(rc.right/2, rc.bottom/2,str);
dc.SelectObject(pOldFont);
font.DeleteObject();
}
CDialog::OnPaint();
}
}