我从资源ID加载了一个CBitmap对象,现在我想在每个维度上将其缩放到50%.我怎么能这样做?
我正在尝试将图像添加到现有按钮。.在某种程度上,我这样做了,问题是我可以添加所有者绘制的图像,但无法添加所需的精确图像..例如,请参见以下内容码
CButton* pBtn= (CButton*)GetDlgItem(ID_WIZBACK);
pBtn->ModifyStyle( 0, BS_ICON );
HICON hIcn= (HICON)LoadImage(
AfxGetApp()->m_hInstance,
MAKEINTRESOURCE(IDI_ICON3),
IMAGE_ICON,
0,0, // use actual size
LR_DEFAULTCOLOR
);
pBtn->SetIcon( hIcn );
Run Code Online (Sandbox Code Playgroud)
上面的代码将位图转换为图标以添加到我的按钮中...如何将确切的位图图像直接添加到现有按钮中。请帮助我。
我正在CBitmap使用CDC. 当我完成它时,我想将它保存到一个文件中。我已经看到有关该代码LINK的进程的一些信息:
CFile file;
if(file.Open(szFileName, CFile::modeCreate | CFile::modeWrite))
{
file.Write(&bh, sizeof(BITMAPFILEHEADER));
file.Write(&(bi.bmiHeader), sizeof(BITMAPINFOHEADER));
file.Write(lpBitmapBits, 3 * nWidth * nHeight);
file.Close();
}
Run Code Online (Sandbox Code Playgroud)
我的疑问是关于BITMAPFILEHEADER和BITMAPINFOHEADER。我怎样才能用给定的CBitmapor填充它们CDC?
案例:
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")));
//WHY THIS LINE?
dc.SelectObject (pOldFont);
}
}
Run Code Online (Sandbox Code Playgroud)
代码在围绕原点(移动到窗口中心)的圆圈中打印“Hello, MFC”。

为什么创建 CFont 指针然后 …