MFC绘图 读取TXT中的浮点数保存 在绘图 但是浮点数怎么保存到对象中 因为CPoint是int

MFC绘图 读取TXT中的浮点数保存 在绘图 但是浮点数怎么保存到对象中 因为CPoint是int,第1张

MFC自带的文本编辑框只能实现只输入数字,不能输入负号和小数点,要实现这个功能,需要自己从CEdit派生出一个类,然后为你的文本框添加一个控制型的变量,类型就为你自己从CEdit派生的类。

我已经把示例程序发到你的邮箱了,请注意查收。

代码 大概就是这样 有几个关键函数仔细一下,要是要完整代码呢留言

CDC memDC;

CBitmap memBitmap,pOldBitmap;

CWindowDC dc(GetDesktopWindow());

memDCCreateCompatibleDC(&dc);

int nWidth,nHeight;

/ nWidth=GetSystemMetrics(SM_CXSCREEN);

nHeight=GetSystemMetrics(SM_CYSCREEN);/

CRect rect;

GetDesktopWindow()->GetWindowRect(rect);

ClientToScreen(&rect);

nWidth=rectWidth();

nHeight=rectHeight();

memBitmapCreateCompatibleBitmap(&dc,nWidth,nHeight);

pOldBitmap=memDCSelectObject(&memBitmap);

// memDCStretchBlt(0,0,rectWidth(),rectHeight(),&dc,0,0,rectWidth(),rectHeight(),SRCCOPY);

memDCBitBlt(0,0,nWidth,nHeight,&dc,0,0,SRCCOPY);

BITMAPFILEHEADER BMFhead;

BITMAPINFOHEADER BMIhead;

BMFheadbfReserved1=0;

BMFheadbfReserved2=0;

BMFheadbfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER);

BMFheadbfSize=BMFheadbfOffBits+nWidthnHeight4;

BMFheadbfType=0x4d42;

BMIheadbiBitCount=32;

BMIheadbiClrImportant=0;

BMIheadbiClrUsed=0;

BMIheadbiSizeImage=0;

BMIheadbiXPelsPerMeter=0;

BMIheadbiYPelsPerMeter=0;

BMIheadbiCompression=BI_RGB;

BMIheadbiHeight=nHeight;

BMIheadbiPlanes=1;

BMIheadbiSize=sizeof(BITMAPINFOHEADER);

BMIheadbiWidth=nWidth;

DWORD dwSize=nWidthnHeight4;

BYTE pData=new BYTE[dwSize];

GetDIBits(memDCm_hDC,(HBITMAP)memBitmapm_hObject,0,nHeight,pData,(LPBITMAPINFO)&BMIhead,DIB_RGB_COLORS);

CFile file;

fileOpen("testbmp",CFile::modeCreate | CFile::modeWrite);

fileWrite(&BMFhead,sizeof(BITMAPFILEHEADER));

fileWrite(&BMIhead,sizeof(BITMAPINFOHEADER));

fileWrite(pData,dwSize);

fileClose();

memDCSelectObject(pOldBitmap);

MessageBox("绘图完毕");

GetParent()->ShowWindow(SW_SHOW);

给你个函数参考一下:

把srcDC换成你要保存的窗口的DC就行:

HBITMAP CopyScreenToBitmap(LPRECT lpRect)

{

int m_xScreen = GetSystemMetrics(SM_CXSCREEN);

//获取y方向屏幕像素()

int m_yScreen = GetSystemMetrics(SM_CYSCREEN);

HDC hScrDC,hMemDC;

HBITMAP hBitmap,hOldBitmap;

int nX1,nX2,nY1,nY2;

int nWidth,nHeight;

if (IsRectEmpty(lpRect))

{

return FALSE;

}

//为屏幕创建设备描述表

hScrDC = CreateDC("DISPLAY",NULL,NULL,NULL);

//为屏幕设备描述表创建兼容的内存设备描述表

hMemDC = CreateCompatibleDC(hScrDC);

// 获得选定区域坐标

nX1 = lpRect->left;

nY1 = lpRect->top;

nX2 = lpRect->right;

nY2 = lpRect->bottom;

//确保选定区域是可见的

if (nX1 < 0)

nX1 = 0;

if (nY1 < 0)

nY1 = 0;

if (nX2 > m_xScreen)

nX2 = m_xScreen;

if (nY2 > m_yScreen)

nY2 = m_yScreen;

nWidth = nX2 - nX1;

nHeight = nY2 - nY1;

// 创建一个与屏幕设备描述表兼容的位图

hBitmap = CreateCompatibleBitmap(hScrDC,nWidth,nHeight);

// 把新位图选到内存设备描述表中

hOldBitmap = (HBITMAP)SelectObject(hMemDC,hBitmap);

// 把屏幕设备描述表拷贝到内存设备描述表中

BitBlt(hMemDC,0,0,nWidth,nHeight,hScrDC,nX1,nY1,SRCCOPY);

//得到屏幕位图的句柄

hBitmap = (HBITMAP)SelectObject(hMemDC,hOldBitmap);

//清除

DeleteDC(hScrDC);

DeleteDC(hMemDC);

return hBitmap;

}

以上就是关于MFC绘图 读取TXT中的浮点数保存 在绘图 但是浮点数怎么保存到对象中 因为CPoint是int全部的内容,包括:MFC绘图 读取TXT中的浮点数保存 在绘图 但是浮点数怎么保存到对象中 因为CPoint是int、如何用MFC编写一个程序,获得整个屏幕的截图并保存为bmp格式、在mfc编程中,如何编程保存视图区为BMP格式的图像等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10116366.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存