主题:新手问题:点阵字模的问题
skybtone
[专家分:160] 发布于 2006-07-13 11:01:00
我很少用点阵字模,但是也知道用的话会很有效果.
大哥大姐指导一下,谢谢哦![em2]
第一:它需要哪些头文件?
现在有一个"宋"字的字模:
char song16S[]={
/* 以下是 '宋' 的 16点阵宋体 字模,32 byte */
0x02,0x00,0x01,0x00,0x7F,0xFE,0x41,0x04,
0x81,0x08,0x01,0x00,0x7F,0xFC,0x03,0x80,
0x05,0x80,0x05,0x40,0x09,0x20,0x11,0x10,
0x21,0x0E,0x41,0x04,0x01,0x00,0x00,0x00,
};
怎样实现在VC里显示它?
用到哪些代码?能指点一下吗?就上面这个例子帮我写哈子代码,耽误大哥大姐一下工夫啦:)
回复列表 (共7个回复)
沙发
skybtone [专家分:160] 发布于 2006-07-16 14:25:00
/?是不是有点麻烦?
板凳
liangbch [专家分:1270] 发布于 2006-08-01 21:40:00
给你一段参考代码,以下代码摘自我的一个程序。
#define FULL_WHITE 0x00ffffff
#define FULL_BLACK 0x00000000
void CDispHZAsHZKView::OnDraw(CDC* pDC)
{
CDispHZAsHZKDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CPoint leftTop;
CPoint tmpPt;
COLORREF c;
BYTE *p;
WORD matrix;
WORD mask;
int i,j;
//p=点阵数据地址
//leftTop=要显示的坐标;
for ( i=0;i<16;i++)
{
matrix= p[i*2];
matrix <<=8;
matrix |= p[i*2+1];
mask=0x8000;
for (j=0;j<16;j++,mask >>= 1)
{
if ( !(matrix & mask) )
c=FULL_WHITE;
else
c=FULL_BLACK;
tmpPt.x=leftTop.x + j;
tmpPt.y=leftTop.y + i;
pDC->SetPixel(tmpPt,c);
}
}
}
3 楼
skybtone [专家分:160] 发布于 2006-08-02 21:00:00
俺有些看不懂,因为我学的VC,VC++还没入门~~~能换个例子么?嘿嘿
4 楼
liangbch [专家分:1270] 发布于 2006-08-03 11:15:00
没听说过 VC 和VC++还有区别,楼主能解释一下吗?你用的是那个公司的产品,版本号是多少?
5 楼
liangbch [专家分:1270] 发布于 2006-08-03 11:19:00
顺便说一下,我用的是VC++ 6.0,在这个编程环境下,可以用纯正的c语言写程序(字符界面的控制台程序和windows程序),也可以用c++写程序(字符界面的控制台程序和windows程序),既可以用MFC类库写windows程序,也可以用winAPI(不用MFC)写windows程序。
6 楼
skybtone [专家分:160] 发布于 2006-08-08 10:23:00
你说的我明白,我的意思是::,|=,CDispHZAsHZKView::OnDraw(CDC* pDC)什么意思不了解,(我用的也是VC6.0Microsoft的)
7 楼
liangbch [专家分:1270] 发布于 2006-08-08 22:17:00
sorry,我误解了你的意思。对于winAPI编程,书倒是看过,但编程经验少,手边也没有什么现成的资料,不能给提供现成的代码。不过你看来查查CreateDC,GetDC等类似的函数,将我的程序稍稍修改,应该不难的,祝你好运。
我来回复