| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5776 人关注过本帖
标题:求重写putpixel函数
只看楼主 加入收藏
hitzl
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2007-8-24
收藏
 问题点数:0 回复次数:29 
求重写putpixel函数

郁闷了,画图都要靠这个函数,NEO SDK画点也是调用了这个函数,
可是在linux上没有这个函数,
现在想重写这个函数,却不知道如何写.

斑竹,大虾们来开动一下你们脑筋

搜索更多相关主题的帖子: 函数 重写 putpixel SDK 大虾 
2007-08-31 15:30
hitzl
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2007-8-24
收藏
得分:0 

帮帮忙拉


2007-08-31 17:56
一笔苍穹
Rank: 1
等 级:新手上路
帖 子:640
专家分:0
注 册:2006-5-25
收藏
得分:0 

自己实现也行,使用SDL或SVGALIB也行,一千个WIN程序员可能只有一个画点函数,但一千个LINUX程序员就能有一千中画点函数——虽然有些夸张了~

2007-08-31 23:06
hitzl
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2007-8-24
收藏
得分:0 

斑竹,目前我查过TUbro C库函数,仍没有找到putpixel函数的源码。由于本人不懂汇编,因此写不出来这个函数的实现。斑竹,帮帮忙吧,搞了好久也搞不掂这个画点东东


2007-09-03 09:29
一笔苍穹
Rank: 1
等 级:新手上路
帖 子:640
专家分:0
注 册:2006-5-25
收藏
得分:0 
你在哪个平台上写啊,不是说LINUX吗?怎么又成TC了
2007-09-03 09:30
hjj1123
Rank: 1
等 级:新手上路
帖 子:198
专家分:0
注 册:2006-7-29
收藏
得分:0 
找ROCKCARRY,他肯定能解决。论坛里关于VESA的东西看看有用的。

qq:674940174
2007-09-03 09:39
hjj1123
Rank: 1
等 级:新手上路
帖 子:198
专家分:0
注 册:2006-7-29
收藏
得分:0 
#include<dos.h>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<process.h>
#define VGA256 0x13
#define TEXT_MODE 0x03

unsigned char far *video_buffer=(char far *)0xA0000000L;

unsigned char bit[8]={128,64,32,16,8,4,2,1};

void Delay(int clicks)
{
unsigned int far *clock=(unsigned int far *)0x0000046CL;
unsigned int now;
now=*clock;
while(abs(*clock-now)<clicks){}
}


void Plot_Pixel_Fast(int x,int y,char color)
{
video_buffer[((y<<8)+(y<<6))+x]=color;
}

void GetHzBit(char ch0,char ch1,char *bitdata)
{
FILE *stream;
long fpos;
fpos=32L*(((unsigned char)ch0-161)*94+((unsigned char)ch1-161));
if((stream=fopen("hzk16","rb"))==NULL){
printf("Open hzk16 error!\\n");
exit(0);
}
fseek(stream, fpos, SEEK_SET);
fread( bitdata, 32, 1, stream);
fclose(stream);
}

void WriteHz(char ch0,char ch1,int x,int y,int color)
{
register int i,j,k;
unsigned vpos;
char bitdata[32];
GetHzBit(ch0,ch1,bitdata);
for(i=0;i<16;i++)
for(j=0;j<8;j++){
if(bitdata[2*i]&bit[j])
Plot_Pixel_Fast(x+j,i+y,color);
if(bitdata[2*i+1]&bit[j])
Plot_Pixel_Fast(x+8+j,i+y,color);
}
}
void WriteHzStr(char *str,int x,int y,int color)
{
int num,i,j,xx;
unsigned char s0,s1;
num=strlen(str);
xx=x;
for(i=0;i<num;i+=2){
WriteHz(str[i],str[i+1],xx,y,color);
xx+=16;
}
}

void Words_Step(char *str,int x,int y,int color,int speed)
{
int num,i,j,xx;
unsigned char s0,s1;
num=strlen(str);
xx=x;
for(i=0;i<num;i+=2){
WriteHz(str[i],str[i+1],xx,y,color);
Delay(speed);
xx+=16;
}
}

void Set_Video_Mode(int mode)
{
union REGS inregs,outregs;
inregs.h.ah=0;
inregs.h.al=(unsigned char)mode;
int86(0x10,&inregs,&outregs);
}

void main(void)
{
Set_Video_Mode(VGA256);
WriteHzStr("按任意键进入中文渐显:",10,100,WHITE);
getch();
Words_Step("现在文字处于渐显状态。",10,130,WHITE,4);
getch();
Set_Video_Mode(TEXT_MODE);
}
这是别人在这个论坛里贴出来的,它已经包括了你需要的东西。

qq:674940174
2007-09-03 09:45
hjj1123
Rank: 1
等 级:新手上路
帖 子:198
专家分:0
注 册:2006-7-29
收藏
得分:0 
发贴前最好把论坛里的帖子看一遍。

qq:674940174
2007-09-03 09:46
hjj1123
Rank: 1
等 级:新手上路
帖 子:198
专家分:0
注 册:2006-7-29
收藏
得分:0 
http://bbs.bc-cn.net/viewthread.php?tid=151828


qq:674940174
2007-09-03 09:47
hitzl
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2007-8-24
收藏
得分:0 

谢谢 hjj1123 的回复。但是问题仍没有解决。
开始我没有把问题说清楚,再重新说明一下这个问题

问题:我在Linux上需要调用一个画点函数。

由于在linux平台没有的画点函数,因此我看完一笔苍穹斑竹的文章后,开始尝试重写Tubro C的putpixel画点函数。但是我参考的“库函数源码大全”并没有给出putpixel的源代码(“大全”基本上对graphic.h里声明函数都没有给出函数的定义,只是说明了一下使用方法)。而我又不懂汇编编程,因此不知道如何在Linux下重写这个函数。

之所以在Tubro C里库函数里要查找putpixel,就是想借鉴一下Tubro C里怎么写的该函数。

hjj1123贴出来的内容似乎也和画点函数不相关,呵。不过还是很感谢hjj1123的关注。


2007-09-03 12:59
快速回复:求重写putpixel函数
数据加载中...
 
   



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

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