[讨论] 大家看看我做的界面怎么样~~~~(练习一下贴图,呵呵。。。)

原野之狼   2007-9-13 12:52 楼主
启动界面 主界面

回复评论 (23)

回复: 大家看看我做的界面怎么样~~~~(练习一下贴图,呵呵。。。)

工作时界面 菜单 设置界面 第一次贴图,可以丢鸡蛋,不可以扔砖头~~~~
点赞  2007-9-13 12:53

回复:大家看看我做的界面怎么样~~~~(练习一下贴图,呵呵。。。)

做得还不错 不妨贴个程序框架给大伙瞧瞧
点赞  2007-9-13 12:56

回复:大家看看我做的界面怎么样~~~~(练习一下贴图,呵呵。。。)

不错啊,就是啊,给大家看看大概的程序框架啊
点赞  2007-9-13 12:58

回复:大家看看我做的界面怎么样~~~~(练习一下贴图,呵呵。。。)

但是我还需要整理一下代码,整理完毕后再上传,现在急忙发代码是不负责任的。
点赞  2007-9-13 13:08

回复:大家看看我做的界面怎么样~~~~(练习一下贴图,呵呵。。。)

不错,lz的触摸屏什么规格的?
点赞  2007-9-13 13:09

回复:大家看看我做的界面怎么样~~~~(练习一下贴图,呵呵。。。)

楼主用的应该是标准屏 期待楼主发界面的源代码来给大家分享,先替大伙谢过了。
点赞  2007-9-13 13:10

回复:大家看看我做的界面怎么样~~~~(练习一下贴图,呵呵。。。)

你的显示屏是什么规格以及什么型号的,我最近也想做个东东,正在找显示屏呢~
男的,未毕业的本科生!
点赞  2007-9-13 14:44

回复:大家看看我做的界面怎么样~~~~(练习一下贴图,呵呵。。。)

是用什么单片机做的呀
点赞  2007-9-14 17:57

回复:大家看看我做的界面怎么样~~~~(练习一下贴图,呵呵。。。)

呼呼...在校应届大四学生,代做电子类毕业设计(测量类、仪器类、控制类、无线通信类、电子产品类、界面设计类、纯论文类等等,一一俱全)。涉及各种单片机软硬件设计、电路模拟分析、FPGA、CPLD、ARM7/ARM9、LINUX、VB/VC++/QT界面等等。包过。。。欢迎咨询。Tel:13957160506。QQ:273437087
点赞  2007-9-15 10:56

回复:大家看看我做的界面怎么样~~~~(练习一下贴图,呵呵。。。)

还可以吧
做第一个我,不做下一个谁!
点赞  2007-9-15 11:41

回复: 大家看看我做的界面怎么样~~~~(练习一下贴图,呵呵。。。)

在规划界面时很实用很简单的工具
点赞  2007-9-19 11:29

回复: 大家看看我做的界面怎么样~~~~(练习一下贴图,呵呵。。。)

在编辑源码时很棒的工具
点赞  2007-9-19 11:29

回复: 大家看看我做的界面怎么样~~~~(练习一下贴图,呵呵。。。)

画框图和流程图时很不错的工具
点赞  2007-9-19 11:30

回复: 大家看看我做的界面怎么样~~~~(练习一下贴图,呵呵。。。)

/************************************************************ FileName: Gui.h Author:胡贵 Version :V1.0 Date: 2007.9.13 Description: 用于GUI的一些底层代码,只是部分功能, 还需要完善 History: <author> <time> <version > <desc> ************************************************************/ #ifndef _GUI_H_ #define _GUI_H_ #include "comm.h" #include "ds1302.h" #define X_PIXEL 128 #define Y_PIXEL 64 #define X_PIXEL_NUMBER 3 #define Y_PIXEL_NUMBER 5 struct GUI_RECT { UINT8 x0; UINT8 x1; UINT8 y0; UINT8 y1; }; struct Text { UINT8 code* *p_Content; /*#if TextProperty UINT8 X_Distance; UINT8 L_Margin; UINT8 R_Margin; UINT8 zimu_X_X; #endif*/ }; struct GUI_BUTTON { UINT8 *p_HZ_STR; UINT8 x; UINT8 y; UINT8 dx; UINT8 dy; }; struct StpLabelBlk_YMD { struct Time *p_Time; struct Time Time_Temp; UINT8 Location_Cur_Crt; UINT8 x; UINT8 y; }; struct StpLabelBlk_Int { UINT16 *p_Dat; UINT8 Location_Cur_Crt; UINT8 n_Bit; UINT16 Dat_Temp; UINT8 x; UINT8 y; }; //逻辑开关量设置页数据结构 struct StpLabelBlk_Logic { UINT8 *p_Dat; UINT8 Dat_Temp; UINT8 x; UINT8 y; UINT8 Location_Cur_Crt; }; /*The base GUI function declaration*/ void GUI_DrawPixel(UINT8 x,UINT8 y); void GUI_DrawHLine(UINT8 x0,UINT8 x1,UINT8 y); void GUI_DrawHLine_(UINT8 x0,UINT8 x1,UINT8 y); void GUI_DrawVLine(UINT8 y0,UINT8 y1,UINT8 x); void GUI_DrawRect(UINT8 x0,UINT8 x1,UINT8 y0,UINT8 y1); UINT8 code* GetCharPointer(UINT8 character); void GUI_DispChars(UINT8 *p_Char,UINT8 x,UINT8 y); void GUI_DispLine(struct Text *p_Text,UINT8 n_Disp,struct GUI_RECT *p_Rect); void GUI_DisIntData(INT16 dat,UINT8 x,UINT8 y,UINT8 *formate); void GUI_DisFloatData(FLP32 dat,UINT8 x,UINT8 y,UINT8 *formate); void GUI_InvertRect(UINT8 x0,UINT8 x1,UINT8 y0,UINT8 y1); void GUI_ClearRect(UINT8 x0,UINT8 x1,UINT8 y0,UINT8 y1); void ZK_To_Bitmap(UINT8 code* zk,UINT8 row,UINT8 col,UINT8* p_Bitmap); void RegionInsertInDisBuffer(struct GUI_RECT* rect,UINT8* p_Content); //UINT8 code* GetCharPointer(UINT8 character); UINT16 get_hz_const(UINT8 *p); UINT8 Generate_HZ_Group(UINT8 *p,UINT8 code **HZ_Group); UINT8 GUI_DispLine_(UINT8 *p_HZ_Str,UINT8 x,UINT8 y); void GUI_DrawArrow(UINT8 up_down); void GUI_ClearAll(void); void Gui_CharacterStyle_Set7_4(void); void Gui_CharacterStyle_Set12_6(void); void GUI_DrawButton(struct GUI_BUTTON *p_btn, UINT8 *p_HZ_Str,UINT8 x,UINT8 y,UINT8 dx,UINT8 dy); void GUI_ButtonClick(struct GUI_BUTTON *p_btn); void GUI_ButtonRelease(struct GUI_BUTTON *p_btn); void GUI_ClearPixel(UINT8 x,UINT8 y); void CreateStpLabel_YMD(UINT8 *p_HZ_Str,UINT8 x_HZ,UINT8 y_HZ,struct Time *p_T, UINT8 x_T,UINT8 y_T,UINT8 flag); void OnOK_YMD(UINT8 flag); void OnPre_YMD(UINT8 flag); void OnNxt_YMD(UINT8 flag); void CreateStpLable_Logic(UINT8 *p_HZ_Str,UINT8 *p_Logic,UINT8 x_HZ,UINT8 y_HZ,UINT8 x_dat,UINT8 y_Dat); void OnOK_Logic(void); void OnPre_Logic(void); void OnNxt_Logic(void); void OnCancle_Logic(void); void CreateStpLabel_Int(UINT8 *p_HZ_Str,UINT8 x_HZ,UINT8 y_HZ,UINT16 *p_Int, UINT8 x_Dat,UINT8 y_Dat,UINT8 n_Int); //UINT8 GetBCD_At(UINT16 dat,UINT8 n_Bit,UINT8 Location_Bit); signed char GetBCD_At(UINT16 dat,UINT8 n_Bit,UINT8 Location_Bit); void OnOk_Int(void); void OnPre_Int(void); void OnNxt_Int(void); void OnCancle_Int(void); #endif
点赞  2007-9-19 11:31

回复: 大家看看我做的界面怎么样~~~~(练习一下贴图,呵呵。。。)

/************************************************************ FileName: Gui.c Author:胡贵 Version :V1.0 Date: 2007.9.13 Description: 用于GUI的一些底层代码,只是部分功能, 还需要完善 History: <author> <time> <version > <desc> ************************************************************/ #include "includes.h" #undef GLOBAL #include "GUI_ZIMU.H" #include "global_variable.h" /**************************************************** //coordinate base 0 //byte0 byte1 ... //DB0 DB0 ... bit0 //DB1 DB1 ... bit1 //DB2 DB2 ... bit2 //DB3 DB3 ... . //DB4 DB4 ... . //DB5 DB5 ... . //DB6 DB6 ... //DB7 DB7 ... *****************************************************/ /********************************************************************* Description:画点 Input: x:x坐标 y:y坐标 Output: Return: Gloable: DisBuffer[]:图形缓冲 Calls: Called By: Others: Modify Record: *********************************************************************/ void GUI_DrawPixel(UINT8 x,UINT8 y) { UINT16 Location_Byte; UINT8 Location_Bit; Location_Byte=(y/8)*X_PIXEL+x; Location_Bit=y%8; DisBuffer[Location_Byte]|=(0x01<<Location_Bit); } /********************************************************************* Description:画水平线,实线 Input: x0:起点x坐标 x1:终点x坐标 y:y坐标 Output: Return: Gloable: DisBuffer[]:图形缓冲 Calls: Called By: Others: Modify Record: *********************************************************************/ void GUI_DrawHLine(UINT8 x0,UINT8 x1,UINT8 y) { // 000000XX XXXXXXXX .... XXXXXXXX XX000000 Location_Bit // | | // | | // Location_Byte0 Location_Byte1 UINT16 Location_Byte0,Location_Byte1; UINT8 Location_Bit; UINT16 i; //Location_Byte0=(y/8)*X_PIXEL+x0; //Location_Byte1=(y/8)*X_PIXEL+x1; Location_Byte0=(y/8)*(X_PIXEL)+x0; Location_Byte1=(y/8)*(X_PIXEL)+x1; Location_Bit=(y%8); for(i=Location_Byte0;i<=Location_Byte1;i++) DisBuffer|=(0x01<<Location_Bit); } /********************************************************************* Description:画水平线,实线,反显,用于擦出区域调用 Input: x0:起点x坐标 x1:终点x坐标 y:y坐标 Output: Return: Gloable: DisBuffer[]:图形缓冲 Calls: Called By: Gui_Clearall(); Others: Modify Record: *********************************************************************/ void GUI_DrawHLine_(UINT8 x0,UINT8 x1,UINT8 y) { // 000000XX XXXXXXXX .... XXXXXXXX XX000000 Location_Bit // | | // | | // Location_Byte0 Location_Byte1 UINT16 Location_Byte0,Location_Byte1; UINT8 Location_Bit; UINT16 i; //Location_Byte0=(y/8)*X_PIXEL+x0; //Location_Byte1=(y/8)*X_PIXEL+x1; Location_Byte0=(y/8)*(X_PIXEL)+x0; Location_Byte1=(y/8)*(X_PIXEL)+x1; Location_Bit=(y%8); for(i=Location_Byte0;i<=Location_Byte1;i++) { DisBuffer&=(~(0x01<<Location_Bit)); // uart0_send(DisBuffer); } // Display(); _nop_(); } /********************************************************************* Description:画垂直线,实线 Input: x0:起点x坐标 x1:终点x坐标 y:y坐标 Output: Return: Gloable: DisBuffer[]:图形缓冲 Calls: Called By: Others: Modify Record: *********************************************************************/ void GUI_DrawVLine(UINT8 y0,UINT8 y1,UINT8 x) { // // 0 // 0 // 0 // 0 // 0 } ----->Location_Byte0 // 0 // X -->Location_Bit0 // X // // X // X // X // X // X // X // X // X // . // . // . // X // X --->Location_Bit1 // 0 // 0 // 0 }------->Location_Byte1 // 0 // 0 // 0 UINT16 Location_Byte0,Location_Byte1; UINT8 Location_Bit0,Location_Bit1,temp=0; UINT16 i; Location_Byte0=(y0/8)*(X_PIXEL)+x; Location_Byte1=(y1/8)*(X_PIXEL)+x; Location_Bit0=(y0%8); Location_Bit1=(y1%8); if(Location_Byte0==Location_Byte1) { for(i=Location_Bit0;i<=Location_Bit1;i++) temp|=(0x01<<i); DisBuffer[Location_Byte0]|=temp; } else { for(i=Location_Byte0+X_PIXEL;i<=Location_Byte1-X_PIXEL;i+=X_PIXEL) DisBuffer=0xff; DisBuffer[Location_Byte0]|=(0xff<<Location_Bit0);//(0x80>>(7-Location_Bit0)); DisBuffer[Location_Byte1]|=(0xff>>(7-Location_Bit1));//~(0x80>>(7-Location_Bit1));//(0x01<<Location_Bit1); } }
点赞  2007-9-19 11:32

回复: 大家看看我做的界面怎么样~~~~(练习一下贴图,呵呵。。。)

/********************************************************************* Description:画矩形,实线 Input: x0:左上角x坐标 x1:右下角x坐标 y0:左上角y坐标 y1:右下角y坐标 Output: Return: Gloable: DisBuffer[]:图形缓冲 Calls: Called By: Gui_Clearall(); Others: Modify Record: *********************************************************************/ void GUI_DrawRect(UINT8 x0,UINT8 x1,UINT8 y0,UINT8 y1) { GUI_DrawHLine(x0, x1,y0); GUI_DrawHLine(x0, x1,y1); GUI_DrawVLine(y0, y1, x0); GUI_DrawVLine(y0, y1, x1); } /********************************************************************* Description:获得字符字模指针(部分字符) Input: character:字符 Output: Return: 指向字符字模的指针 Gloable: hz_A:字模数组 . . . Calls: Called By: Others: Modify Record: *********************************************************************/ UINT8 code* GetCharPointer(UINT8 character) { UINT8 code *p; switch(character) { case 'A':p=hz_A; break; case 'P':p=hz_P; break; case 'S':p=hz_S; break; case 'I':p=hz_I; break; case 'D':p=hz_D; break; case 'H':p=hz_H; break; case 'O':p=hz_O; break; case 'V':p=hz_V; break; case 'R':p=hz_Run; //Write_UART_STRING("OK1"); break; case 'T':p=hz_Stop; //Write_UART_STRING("OK2"); break; case '0':p=hz_0_;//+CharacterStyle*(hz_0_-hz_0); break; case '1':p=hz_1_;//+CharacterStyle*(hz_0_-hz_0); break; case '2':p=hz_2_;//+CharacterStyle*(hz_0_-hz_0); break; case '3':p=hz_3_;//+CharacterStyle*(hz_0_-hz_0); break; case '4':p=hz_4_;//+CharacterStyle*(hz_0_-hz_0); break; case '5':p=hz_5_;//+CharacterStyle*(hz_0_-hz_0); break; case '6':p=hz_6_;//+CharacterStyle*(hz_0_-hz_0); break; case '7':p=hz_7_;//+CharacterStyle*(hz_0_-hz_0); break; case '8':p=hz_8_;//+CharacterStyle*(hz_0_-hz_0); break; case '9':p=hz_9_;//+CharacterStyle*(hz_0_-hz_0); break; default: break; } return p; } /********************************************************************* Description:在确定位置显示一个字符串,字符块基点在左下角 Input: x:字符块x坐标 y:字符块y坐标 p_Char:字符串指针 Output: Return: Gloable: struct GUI_RECT 矩形结构体 Number_X_Pixel:字符的X方向上的像素 Number_Y_Pixel:字符在Y方向上的像素 Calls: Gui_CharacterStyle_Set7_4();设置字体7*4 GUI_ClearRect();清除一片区域 ZK_To_Bitmap();字模转成位图 RegionInsertInDisBuffer();往缓冲插入一片区域 Called By: Others: Modify Record: *********************************************************************/ void GUI_DispChars(UINT8 *p_Char,UINT8 x,UINT8 y) { UINT8 i,count; UINT8 xdata mid[72]; struct GUI_RECT rect; count=strlen(p_Char); // Gui_CharacterStyle_Set7_4(); GUI_ClearRect(x, x+Number_X_Pixel*count-1, y-Number_Y_Pixel+1, y); for(i=0;i<count;i++) { ZK_To_Bitmap(GetCharPointer(*p_Char++), Number_Y_Pixel, Number_X_Pixel, mid); rect.x0=x+i*Number_X_Pixel; rect.x1=rect.x0+Number_X_Pixel-1; rect.y0=y-Number_Y_Pixel+1; rect.y1=y; RegionInsertInDisBuffer(&rect, mid); } // Gui_CharacterStyle_Set12_6(); } /* void GUI_DispLine(struct Text *p_Text,UINT8 n_Disp,struct GUI_RECT *p_Rect) { UINT8 i,mid[144]; struct GUI_RECT rect; GUI_ClearRect(p_Rect->x0, p_Rect->x1, p_Rect->y0, p_Rect->y1); for(i=0;i<n_Disp;i++) { ZK_To_Bitmap(*(p_Text->p_Content+i), 12, 12, mid); rect.x0=p_Rect->x0+i*12; rect.x1=rect.x0+11; rect.y0=p_Rect->y0; rect.y1=p_Rect->y1; RegionInsertInDisBuffer(&rect,mid); PrintDisBuffer_(); } }*/
点赞  2007-9-19 11:32

回复: 大家看看我做的界面怎么样~~~~(练习一下贴图,呵呵。。。)

/********************************************************************* Description:整屏幕输出一副位图X_PIXEL*Y_PIXEL Input: p_BMP:位图字模指针 Output: Return: Gloable: DisBuffer[]:图形缓冲 Calls: Called By: Others: Modify Record: *********************************************************************/ void GUI_DispBMP(UINT8 code *p_BMP) { UINT16 i; for(i=0;i<488;i++) DisBuffer=*p_BMP++; } /********************************************************************* Description:显示整数,坐标基点在左下角 Input: dat:需要显示的整数 x:x 坐标 y:y坐标 formate:格式化方式 Output: Return: Gloable: struct GUI_RECT 矩形结构体 Number_X_Pixel:字符的X方向上的像素 Number_Y_Pixel:字符在Y方向上的像素 Addr_Base:数字字模段起始地址 Addr_Deviate:数字字模偏移量,即字模字节数 Calls: GUI_ClearRect();清除一片区域 ZK_To_Bitmap();字模转成位图 RegionInsertInDisBuffer();往缓冲插入一片区域 pow_10();求幂 Called By: Others: 注意数值范围,目前定义的是16 bit Modify Record: *********************************************************************/ void GUI_DisIntData(INT16 dat,UINT8 x,UINT8 y,UINT8 *formate) { UINT8 xdata buf[10],BufLen,i; UINT8 xdata mid[72]; struct GUI_RECT rect; rect.x0=x; rect.y0=y-Number_Y_Pixel+1; rect.y1=y; sprintf(buf,formate,dat); BufLen = strlen(buf); GUI_ClearRect(x, x+Number_X_Pixel*BufLen-1, y-Number_Y_Pixel + 1, y); for (i = 0; i < BufLen; i++) { if (buf == '-') { GUI_DrawHLine(rect.x0, rect.x0+Number_X_Pixel-1, rect.y0-Number_Y_Pixel/2); rect.x0+=Number_X_Pixel; } else { ZK_To_Bitmap(Addr_Base + Addr_Deviate * (buf-'0'), Number_Y_Pixel, Number_X_Pixel, mid); rect.x1=rect.x0+Number_X_Pixel-1; RegionInsertInDisBuffer(&rect, mid); rect.x0=rect.x0+Number_X_Pixel; } } } /********************************************************************* Description:显示整数,坐标基点在左下角 Input: dat:需要显示的整数 x:x 坐标 y:y坐标 formate:格式化方式 Output: Return: Gloable: Number_X_Pixel:字符的X方向上的像素 Number_Y_Pixel:字符在Y方向上的像素 special:特殊处理,这是一个设计的局限性,需要在下一个版本中改进 Calls: pow_10();求幂 GUI_DisIntData();显示整数 GUI_DrawPixel();画点 Called By: Others: Modify Record: *********************************************************************/ void GUI_DisFloatData(FLP32 dat,UINT8 x,UINT8 y,UINT8 *formate) { UINT8 xdata buf[10],BufLen,i; UINT8 xdata mid[72]; struct GUI_RECT rect; rect.x0=x; rect.y0=y-Number_Y_Pixel+1; rect.y1=y; sprintf(buf,formate,dat); BufLen = strlen(buf); GUI_ClearRect(x, x+Number_X_Pixel*BufLen-1-(Number_X_Pixel - Number_Dot_Pixel), y-Number_Y_Pixel + 1, y); for (i = 0; i < BufLen; i++) { if (buf == '.')//only one pixel { GUI_DrawPixel(rect.x0,rect.y1-Number_Dot_Pixel_Y); rect.x0+=2; } else { if (buf == '-') { GUI_DrawHLine(rect.x0, rect.x0+Number_X_Pixel-1, rect.y0-Number_Y_Pixel/2); rect.x0+=Number_X_Pixel; } else { ZK_To_Bitmap(Addr_Base + Addr_Deviate * (buf-'0'), Number_Y_Pixel, Number_X_Pixel, mid); rect.x1=rect.x0+Number_X_Pixel-1; RegionInsertInDisBuffer(&rect, mid); rect.x0=rect.x0+Number_X_Pixel; } } } } /********************************************************************* Description:显示区域反转 Input: x0:左上角x坐标 x1:右下角x坐标 y0:左上角y坐标 y1:右下角y坐标 Output: Return: Gloable: Number_X_Pixel:字符的X方向上的像素 Number_Y_Pixel:字符在Y方向上的像素 special:特殊处理,这是一个设计的局限性,需要在下一个版本中改进 DisBuffer[]:图形缓冲 Calls: Called By: Others: Modify Record: *********************************************************************/ void GUI_InvertRect(UINT8 x0,UINT8 x1,UINT8 y0,UINT8 y1) { UINT8 i,j,Location_Bit; UINT16 Location_Byte; //for(i=x0;i<=x1-5;i++)// 不怎么严谨 for(i=x0;i<=x1;i++) for(j=y0;j<=y1;j++) { Location_Byte=(j/8)*X_PIXEL+i; Location_Bit=j%8; if((DisBuffer[Location_Byte]>>Location_Bit)&0x01) DisBuffer[Location_Byte]&=(~(0x01<<Location_Bit)); else DisBuffer[Location_Byte]|=(0x01<<Location_Bit); } } /********************************************************************* Description:清除区域 Input: x0:左上角x坐标 x1:右下角x坐标 y0:左上角y坐标 y1:右下角y坐标 Output: Return: Gloable: Calls: GUI_DrawHLine_();画线,反色 Called By: Others: Modify Record: *********************************************************************/ void GUI_ClearRect(UINT8 x0,UINT8 x1,UINT8 y0,UINT8 y1) { UINT8 i; for(i=y0;i<=y1;i++) { GUI_DrawHLine_(x0, x1,i); // Display(); } }
点赞  2007-9-19 11:33

回复: 大家看看我做的界面怎么样~~~~(练习一下贴图,呵呵。。。)

/********************************************************************* Description:像素值转成字节表示(0x00,0x01),这样编程简单,不过此方式需要改变。 Input: row:字模行数 col:字模列数 zk:字模指针 Output: p_Bitmap:转换结果存放区域指针 Return: Gloable: Calls: Called By: Others: Modify Record: *********************************************************************/ void ZK_To_Bitmap(UINT8 code* zk,UINT8 row,UINT8 col,UINT8* p_Bitmap) { UINT8 i,j,Byte_ZK,Bit_Byte; for(j=0;j<col;j++) for(i=0;i<row;i++) { Byte_ZK=j*(row/8+1)+i/8;//(i*((col-1)/8+1)+j/8); Bit_Byte=i%8; // if((zk[(i*((col-1)/8+1)+j/8)]<<(j%8))==0x80) if(((zk[Byte_ZK]>>Bit_Byte)&0x01)) *p_Bitmap++=1; else *p_Bitmap++=0; } } /* //汉字的基准在左下角 void HZInsertInDis(UINT8 *p_HZ,UINT8 Pixel_X,UINT8 Pixel_Y,UINT8 x,UINT8 y) { UINT8 temp[144],i; for(i=0;i<144;i++) if() }*/ /********************************************************************* Description:显示信息插入显示缓冲。 Input: rect:区域位置,和内容相对应 p_Content:显示内容,横排,字节标识像素值(0x00,0x01) Output: p_Bitmap:转换结果存放区域指针 Return: Gloable: DisBuffer[]:显示缓冲 Calls: Called By: Others: Modify Record: *********************************************************************/ void RegionInsertInDisBuffer(struct GUI_RECT* rect,UINT8* p_Content) { UINT8 i,j; UINT16 Byte_Buffer,Bit_Byte; for(j=rect->x0;j<=rect->x1;j++) { for(i =rect->y0;i<=rect->y1;i++) { Byte_Buffer=(i/8)*X_PIXEL+j;//(i-1)*16+(j-1)/8; Bit_Byte=(i%8);//(j-1)%8; if((*p_Content++)==1) DisBuffer[Byte_Buffer]|=(0x01<<Bit_Byte); else DisBuffer[Byte_Buffer]&=(~(0x01<<Bit_Byte)); } } } /********************************************************************* Description:获取汉字内码,汉字有两个字节表示 Input: p:单个汉字指针 Output: Return: 两字节的汉字内码 Gloable: Calls: Called By: Others: Modify Record: *********************************************************************/ unsigned int get_hz_const(UINT8 *p) { unsigned int const_; const_=*p++; const_<<=8; const_|=*p++; return const_; } /********************************************************************* Description:获取汉字串的字模表示 Input: p:汉字串 Output: HZ_Group:指向字模指针的指针,即存放汉字串中所有汉字字模指针的数组 Return: 两字节的汉字内码 Gloable: Calls: get_hz_const();获取汉字内码。 Called By: Others: 考虑到效率的问题,此函数当中的查找判断需要做优化,方法是做成顺序表。 Modify Record: *********************************************************************/ UINT8 Generate_HZ_Group(UINT8 *p,UINT8 code **HZ_Group) { UINT8 n_HZ=0; UINT8 *q; UINT8 i; unsigned int const_mid=0;//mid; q=p; while((*q++)!=0x00) n_HZ++; n_HZ>>=1; for(i=0;i<n_HZ;i++) { const_mid=*p++; const_mid<<=8; const_mid|=*p++; if(const_mid==get_hz_const("等")) *HZ_Group++=hz_deng; else if(const_mid==get_hz_const("待")) *HZ_Group++=hz_dai; else if(const_mid==get_hz_const("完")) *HZ_Group++=hz_wan; else if(const_mid==get_hz_const("成")) *HZ_Group++=hz_cheng_gong; else if(const_mid==get_hz_const("测")) *HZ_Group++=hz_ce; else if(const_mid==get_hz_const("量")) *HZ_Group++=hz_liang; else if(const_mid==get_hz_const("设")) *HZ_Group++=hz_she; else if(const_mid==get_hz_const("置")) *HZ_Group++=hz_zhi; else if(const_mid==get_hz_const("存")) *HZ_Group++=hz_cun; else if(const_mid==get_hz_const("储")) *HZ_Group++=hz_chu_cun; else if(const_mid==get_hz_const("时")) *HZ_Group++=hz_shi; else if(const_mid==get_hz_const("间")) *HZ_Group++=hz_jian_xie; else if(const_mid==get_hz_const("通")) *HZ_Group++=hz_tong; else if(const_mid==get_hz_const("信")) *HZ_Group++=hz_xin; else if(const_mid==get_hz_const("仪")) *HZ_Group++=hz_yi; else if(const_mid==get_hz_const("表")) *HZ_Group++=hz_biao; else if(const_mid==get_hz_const("校")) *HZ_Group++=hz_jiao; else if(const_mid==get_hz_const("正")) *HZ_Group++=hz_zheng; else if(const_mid==get_hz_const("试")) *HZ_Group++=hz_shi_juan; else if(const_mid==get_hz_const("件")) *HZ_Group++=hz_jian; else if(const_mid==get_hz_const("模")) *HZ_Group++=hz_mo; else if(const_mid==get_hz_const("式")) *HZ_Group++=hz_shi_yang; else if(const_mid==get_hz_const("峰")) *HZ_Group++=hz_feng; else if(const_mid==get_hz_const("值")) *HZ_Group++=hz_zhi_ri; else if(const_mid==get_hz_const("停")) *HZ_Group++=hz_ting; else if(const_mid==get_hz_const("留")) *HZ_Group++=hz_liu; else if(const_mid==get_hz_const("阈")) *HZ_Group++=hz_yu; else if(const_mid==get_hz_const("报")) *HZ_Group++=hz_bao; else if(const_mid==get_hz_const("警")) *HZ_Group++=hz_jing; else if(const_mid==get_hz_const("截")) *HZ_Group++=hz_jie; else if(const_mid==get_hz_const("面")) *HZ_Group++=hz_mian; else if(const_mid==get_hz_const("打")) *HZ_Group++=hz_da; else if(const_mid==get_hz_const("印")) *HZ_Group++=hz_yin; else if(const_mid==get_hz_const("方")) *HZ_Group++=hz_fang; else if(const_mid==get_hz_const("数")) *HZ_Group++=hz_shu; else if(const_mid==get_hz_const("据")) *HZ_Group++=hz_ju; else if(const_mid==get_hz_const("查")) *HZ_Group++=hz_cha; else if(const_mid==get_hz_const("询")) *HZ_Group++=hz_xun; else if(const_mid==get_hz_const("清")) *HZ_Group++=hz_qing; else if(const_mid==get_hz_const("除")) *HZ_Group++=hz_chu; else if(const_mid==get_hz_const("分")) *HZ_Group++=hz_fen; else if(const_mid==get_hz_const("秒")) *HZ_Group++=hz_miao; else if(const_mid==get_hz_const("年")) *HZ_Group++=hz_nian; else if(const_mid==get_hz_const("月")) *HZ_Group++=hz_yue; else if(const_mid==get_hz_const("日")) *HZ_Group++=hz_ri; else if(const_mid==get_hz_const("波")) *HZ_Group++=hz_bo; else if(const_mid==get_hz_const("特")) *HZ_Group++=hz_te; else if(const_mid==get_hz_const("率")) *HZ_Group++=hz_lv; else if(const_mid==get_hz_const("地")) *HZ_Group++=hz_di; else if(const_mid==get_hz_const("址")) *HZ_Group++=hz_zhi_di; else if(const_mid==get_hz_const("/u")) *HZ_Group++=symbol_u; else if(const_mid==get_hz_const("/d")) *HZ_Group++=symbol_d; else //new added if(const_mid==get_hz_const("三")) *HZ_Group++=hz_san; else if(const_mid==get_hz_const("思")) *HZ_Group++=hz_si; else if(const_mid==get_hz_const("行")) *HZ_Group++=hz_xing; else if(const_mid==get_hz_const("控")) *HZ_Group++=hz_kong; else if(const_mid==get_hz_const("联")) *HZ_Group++=hz_lian; else if(const_mid==get_hz_const("系")) *HZ_Group++=hz_xi; else if(const_mid==get_hz_const("电")) *HZ_Group++=hz_dian; else if(const_mid==get_hz_const("话")) *HZ_Group++=hz_hua; else if(const_mid==get_hz_const("实")) *HZ_Group++=hz_shi_ji; else if(const_mid==get_hz_const("速")) *HZ_Group++=hz_su_lv; else if(const_mid==get_hz_const("压")) *HZ_Group++=hz_ya; else if(const_mid==get_hz_const("力")) *HZ_Group++=hz_li; else if(const_mid==get_hz_const("机")) *HZ_Group++=hz_ji_qi; else if(const_mid==get_hz_const("欢")) *HZ_Group++=hz_huan; else if(const_mid==get_hz_const("迎")) *HZ_Group++=hz_ying; else if(const_mid==get_hz_const("使")) *HZ_Group++=hz_shi_yong; else if(const_mid==get_hz_const("用")) *HZ_Group++=hz_yong; else if(const_mid==get_hz_const("是")) *HZ_Group++=hz_shi_fou; else if(const_mid==get_hz_const("否")) *HZ_Group++=hz_fou; else if(const_mid==get_hz_const("请")) *HZ_Group++=hz_qing_shi; else if(const_mid==get_hz_const("输")) *HZ_Group++=hz_shu_ru; else if(const_mid==get_hz_const("入")) *HZ_Group++=hz_ru; else if(const_mid==get_hz_const("自")) *HZ_Group++=hz_zi; else if(const_mid==get_hz_const("动")) *HZ_Group++=hz_dong; else if(const_mid==get_hz_const("全")) *HZ_Group++=hz_quan; else if(const_mid==get_hz_const("部")) *HZ_Group++=hz_bu; else if(const_mid==get_hz_const("密")) *HZ_Group++=hz_mi; else if(const_mid==get_hz_const("码")) *HZ_Group++=hz_ma; else if(const_mid==get_hz_const("两")) *HZ_Group++=hz_liang_dian; else if(const_mid==get_hz_const("多")) *HZ_Group++=hz_duo; else if(const_mid==get_hz_const("点")) *HZ_Group++=hz_dian_di; else if(const_mid==get_hz_const("修")) *HZ_Group++=hz_xiu; else if(const_mid==get_hz_const("改")) *HZ_Group++=hz_gai; else if(const_mid==get_hz_const("新")) *HZ_Group++=hz_xin_niang; else if(const_mid==get_hz_const("隔")) *HZ_Group++=hz_ge; else if(const_mid==get_hz_const("统")) *HZ_Group++=hz_tong_ji; else if(const_mid==get_hz_const("复")) *HZ_Group++=hz_fu; else if(const_mid==get_hz_const("位")) *HZ_Group++=hz_wei; else if(const_mid==get_hz_const("重")) *HZ_Group++=hz_chong; else if(const_mid==get_hz_const("上")) *HZ_Group++=hz_shang; else if(const_mid==get_hz_const("电")) *HZ_Group++=hz_dian_yuan; else if(const_mid==get_hz_const("零")) *HZ_Group++=hz_ling; else if(const_mid==get_hz_const("满")) *HZ_Group++=hz_man; else if(const_mid==get_hz_const("程")) *HZ_Group++=hz_cheng; else if(const_mid==get_hz_const("编")) *HZ_Group++=hz_bian; else if(const_mid==get_hz_const("号")) *HZ_Group++=hz_hao; else if(const_mid==get_hz_const("无")) *HZ_Group++=hz_wu; else if(const_mid==get_hz_const("效")) *HZ_Group++=hz_xiao; else if(const_mid==get_hz_const("低")) *HZ_Group++=hz_di_wa; else if(const_mid==get_hz_const("砌")) *HZ_Group++=hz_qi; else if(const_mid==get_hz_const("体")) *HZ_Group++=hz_ti; else if(const_mid==get_hz_const("原")) *HZ_Group++=hz_yuan; else if(const_mid==get_hz_const("小")) *HZ_Group++=hz_xiao_shu; else if(const_mid==get_hz_const("型")) *HZ_Group++=hz_xing_hao; else if(const_mid==get_hz_const("数")) *HZ_Group++=hz_shu_ju; else if(const_mid==get_hz_const("显")) *HZ_Group++=hz_xian; else if(const_mid==get_hz_const("抗")) *HZ_Group++=hz_kang; else if(const_mid==get_hz_const("折")) *HZ_Group++=hz_zhe; else if(const_mid==get_hz_const("管")) *HZ_Group++=hz_guan; else if(const_mid==get_hz_const("理")) *HZ_Group++=hz_li_lun; else if(const_mid==get_hz_const("所")) *HZ_Group++=hz_suo; else if(const_mid==get_hz_const("选")) *HZ_Group++=hz_xuan; else if(const_mid==get_hz_const("项")) *HZ_Group++=hz_xiang; else if(const_mid==get_hz_const("查")) *HZ_Group++=hz_cha_kan; else if(const_mid==get_hz_const("看")) *HZ_Group++=hz_kan; else if(const_mid==get_hz_const("恢")) *HZ_Group++=hz_hui; else if(const_mid==get_hz_const("出")) *HZ_Group++=hz_chu_chang; else if(const_mid==get_hz_const("厂")) *HZ_Group++=hz_chang; else if(const_mid==get_hz_const("索")) *HZ_Group++=hz_suo_yin; else if(const_mid==get_hz_const("引")) *HZ_Group++=hz_yin_hao; else if(const_mid==get_hz_const("确")) *HZ_Group++=hz_que; else if(const_mid==get_hz_const("认")) *HZ_Group++=hz_ren; else if(const_mid==get_hz_const("息")) *HZ_Group++=hz_xi_nu; else if(const_mid==get_hz_const("定")) *HZ_Group++=hz_ding; else if(const_mid==get_hz_const("退")) *HZ_Group++=hz_tui; else if(const_mid==get_hz_const("出")) *HZ_Group++=hz_chu_ru; else if(const_mid==get_hz_const("向")) *HZ_Group++=hz_xiang_xia; else if(const_mid==get_hz_const("下")) *HZ_Group++=hz_xia; else if(const_mid==get_hz_const("左")) *HZ_Group++=hz_zuo; else if(const_mid==get_hz_const("右")) *HZ_Group++=hz_you; else if(const_mid==get_hz_const("增")) *HZ_Group++=hz_zeng; else if(const_mid==get_hz_const("加")) *HZ_Group++=hz_jia; else if(const_mid==get_hz_const("移")) *HZ_Group++=hz_yi_wei; else if(const_mid==get_hz_const("空")) *HZ_Group++=hz_kong_kong; else if(const_mid==get_hz_const("终")) *HZ_Group++=hz_zhong; else if(const_mid==get_hz_const("止")) *HZ_Group++=hz_zhi_bu; else if(const_mid==get_hz_const("功")) *HZ_Group++=hz_gong; } return n_HZ; }
点赞  2007-9-19 11:33

回复:大家看看我做的界面怎么样~~~~(练习一下贴图,呵呵。。。)

不错哦,大概是怎么弄的呢
点赞  2007-9-19 14:28
12下一页
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复