📄 graph.cpp
字号:
/*********************************************
程序设计:罗穆峰 2008-11-20
http://lmf.biaotian.com
E-mail: lmf@biaotian.com
QQ: 16324942 [模范英雄]
*********************************************/
#include "Graph.h"
#include <string.h>
HDC CGraph::GetMemDC()
{
return m_MemDC;
}
int ** CGraph::GetImageBuf()
{
/*
获得图像缓存区的指针。
返回值:
返回的指针又指向一组指针,每一个指针指向一行图像数据。数据中每四个字节表示一个像素点,由低到高字节依次表示蓝绿红,最高字节不用。
*/
return m_BitData;
}
void CGraph::Refresh()
{
/*
将缓存区中的图像数据刷新显示到屏幕上。
*/
RedrawWindow(m_hWnd,NULL,NULL,RDW_INVALIDATE|RDW_UPDATENOW);
}
void CGraph::Init(HWND hWnd)
{
m_hWnd=hWnd;
HDC dc=GetDC(hWnd);
m_MemDC=CreateCompatibleDC(dc);
BITMAPINFO bi;
memset(&bi,0,sizeof bi);
bi.bmiHeader.biBitCount=32;
bi.bmiHeader.biHeight=256;
bi.bmiHeader.biPlanes=1;
bi.bmiHeader.biSize=sizeof bi.bmiHeader;
bi.bmiHeader.biWidth=288;
HBITMAP bit=CreateDIBSection(dc,&bi,DIB_RGB_COLORS,reinterpret_cast<void**>(&m_BitData[255]),NULL,0);
m_OldBitmap=SelectObject(m_MemDC,bit);
ReleaseDC(hWnd,dc);
int i;
for(i=254;i>=0;i--)
{
m_BitData[i]=m_BitData[i+1]+288;
}
}
void CGraph::UnInit()
{
HGDIOBJ bit=SelectObject(m_MemDC,m_OldBitmap);
DeleteObject(bit);
DeleteDC(m_MemDC);
}
void CGraph::ShowText(int x,int y,const char * Text,int Colour)
{
/*
显示文字。
参数:
[i]x,y 显示位置。
[i]Text 要显示的文字内容。
[i]Colour 文字的颜色。字节由低到高依次表示蓝、绿、红。
*/
Colour=(Colour&0xff)<<16|(Colour&0xff00)|Colour>>16;//变为红、绿、蓝的顺序
SetTextColor(m_MemDC,Colour);
SetBkMode(m_MemDC,TRANSPARENT);
HGDIOBJ oldfont=SelectObject(m_MemDC,GetStockObject(SYSTEM_FIXED_FONT));
TextOut(m_MemDC,x,y,Text,strlen(Text));
SelectObject(m_MemDC,oldfont);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -