| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 987 人关注过本帖
标题:各位能否给点提示图形在C下的编程?
只看楼主 加入收藏
yup6688
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-8-5
收藏
 问题点数:0 回复次数:8 
各位能否给点提示图形在C下的编程?


用C语言编程实现对显示缓冲区进行读/写操作,在屏幕上显示住址、电话和姓名。

想了很久 尝试了一些,还是没有结果.那位帮帮忙.汉字在16X16点阵下显示.
搜索更多相关主题的帖子: 图形 提示 
2007-11-01 23:19
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 

wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-11-02 00:46
yup6688
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-8-5
收藏
得分:0 
XIEIXE

2007-11-02 09:55
nwpu063417
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:428
专家分:28
注 册:2007-5-11
收藏
得分:0 
有一个叫win-tc的编译器能生成相应的代码,和汉字字模

2007-11-02 19:47
yup6688
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-8-5
收藏
得分:0 

谢谢大家的提醒和关注哈.我写了一个.要求在turbo c下编译,但是显示还是有点问题。不能在其他上面做.
大家帮忙看看那里有问题,帮我该下,不盛感激!!!!

#include<graphics.h>
#include <stdio.h>
#include <conio.h>

const char* Hz16Path ="C:\JMSOFT\CLanguage\tc";
const char * HzStr = "湖北";
FILE *handle;
int OpenHz(const char *Hz16Path)
{
int O_RDONLY ,O_BINARY;
return (handle=open(Hz16Path,O_RDONLY | O_BINARY));
}

int Wrt16Hz(int x, int y,int z,int color,char *p)
/*在(x,y)用color颜色显示汉字串p,汉字之间的空格数为z */
{
unsigned int i,c1,c2,f=0; /*x,y:write at (x,y);*/
int rec,i1,i2,i3; /*z:space between;*/
long offset; /*color:txt color*/
char by[32]; /*p:HZ str*/
if( handle<0 ) return -1;
while((i=*p++)!=0)
{
if(i>0xa0)
if(f==0){
c1=(i-0xa0)&0x07f;
f=1;
}
else{
c2=(i-0xa0)&0x07f;
f=0;
rec=(c1-1)*94+c2-1;
offset=rec*32L;
lseek(handle,offset,SEEK_SET);
read(handle,by,32);
for(i1=0;i1<16;i1++)
for(i2=0;i2<2;i2++)
for(i3=0;i3<8;i3++)
if(GetBit(by[i1*2+i2],7-i3))
putpixel(x+i2*8+i3,y+i1,color);
x=x+z+16;
}
}
return(x);
}
int GetBit(unsigned char c,int n) /*取得汉字的点阵数据*/
{
return((c>>n)&1);
}
void CloseHz(void) /*汉字显示结束,应该关闭字库文件*/
{
close( handle );
}

int main()
{
int gr=DETECT,gm;
initgraph(&gr,&gm,"C:\JMSOFT\CLanguage\tc");
OpenHz( Hz16Path );
Wrt16Hz(200,200,10,RED,HzStr);
CloseHz();
getch();
closegraph();
return 0;
}


2007-11-02 22:16
yup6688
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-8-5
收藏
得分:0 
补充说一下:就是要显示“湖北”两个字。

2007-11-02 22:17
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 

汉字库文件也没有.
OpenHz()函数中的在头文件FCNTL.H中有定义.O_RDONLY ,O_BINARY
open()函数返回的不是FILE类型而是一个int型.


wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-11-02 23:38
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 

#include<graphics.h>
#include <stdio.h>
#include <conio.h>
#include <FCNTL.H>

const char* Hz16Path ="HZK16"; /*16X16汉字库在当前目录.*/
char * HzStr = "湖北";
int handle; /*open()返回的不是FILE*类型,而是int*/
int OpenHz(const char *Hz16Path)
{
/*int O_RDONLY ,O_BINARY;在FCNTL.H有定义*/
return (handle=open(Hz16Path,O_RDONLY | O_BINARY));
}

int Wrt16Hz(int x, int y,int z,int color,char *p)
/*在(x,y)用color颜色显示汉字串p,汉字之间的空格数为z */
{
unsigned int i,c1,c2,f=0; /*x,y:write at (x,y);*/
int rec,i1,i2,i3; /*z:space between;*/
long offset; /*color:txt color*/
char by[32]; /*p:HZ str*/
if( handle<0 ) return -1;
while((i=*p++)!=0)
{
if(i>0xa0)
if(f==0){
c1=(i-0xa0)&0x07f;
f=1;
}
else{
c2=(i-0xa0)&0x07f;
f=0;
rec=(c1-1)*94+c2-1;
offset=rec*32L;
lseek(handle,offset,SEEK_SET);
read(handle,by,32);
for(i1=0;i1<16;i1++)
for(i2=0;i2<2;i2++)
for(i3=0;i3<8;i3++)
if(GetBit(by[i1*2+i2],7-i3))
putpixel(x+i2*8+i3,y+i1,color);
x=x+z+16;
}
}
return(x);
}
int GetBit(unsigned char c,int n) /*取得汉字的点阵数据*/
{
return((c>>n)&1);
}
void CloseHz(void) /*汉字显示结束,应该关闭字库文件*/
{
close( handle );
}

int main()
{
int gr=DETECT,gm;
initgraph(&gr,&gm,"C:\JMSOFT\CLanguage\tc");
OpenHz( Hz16Path );

Wrt16Hz(200,200,10,4,HzStr);

CloseHz();
getch();
closegraph();
return 0;
}



wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-11-02 23:58
yup6688
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2006-8-5
收藏
得分:0 
谢谢这位大哥,好人啦!我已经做出来了.

再次感谢下!

2007-11-03 11:15
快速回复:各位能否给点提示图形在C下的编程?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014266 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved