当前位置:文档之家› 基于VC++MFC程序设计简易画图板32 (4)

基于VC++MFC程序设计简易画图板32 (4)

基于VC++MFC程序设计简易画图板32 (4)
基于VC++MFC程序设计简易画图板32 (4)

#include

#include

#include

#pragma comment(lib, "winmm.lib")

#include

//???????????????????????????????????????//

HANDLE hConsole;

/*全局变量*********************************************************/ //Music

#define MMM "e:\\\\Music\\\\"

#define MP3 ".mp3"

//结构体中分量数组

#define MAXTITL 20

#define MAXAUTL 20

#define MAXCATE 20

#define MAXTIME 20

#define MAXHOUS 20

#define MAXID 20

#define MAXDAY 20

#define MAXMUSI 20

#define MAX 20 //各分量长度中的最大值

//文件名

#define FILENAME "e:\\bookinformation.txt" //全部图书信息

#define FILEBOOKIN "e:\\bookin.txt" //入库图书信息

#define FILEBOOKOUT "e:\\bookout.txt" //出库图书信息

//子函数声明

void music1( char *); //打开关联音乐

void closemusic1( char *); //关闭关联音乐

int Return(); //返回上一菜单

int insert_record( char *fileName, void *newRecord, int recordLength );//存盘

/*录入图书信息******************************************************/ int inputId( char *stringId); //ID录入

int inputTitle( char *stringTitle ); //书名录入

int inputAuthor( char *stringAuthor ); //作者录入

int inputCate( char *stringCate ); //书籍类型录入

int inputTime( char *stringTime ); //出版社录入

int inputHouse( char *stringHOUS ); //出版时间录入

int findRecord_bk_Id( char *fileName, char *bk_title, struct book *bk ); //以Id为关键字在[bookinformation]文件中查找是否已存在相关信息

/*修改图书信息****************************************************/

void edit_record(); //修改(主)

int updata_record( char *fileName, char *newRecord, int recordNo, int recordLength ); //修改(子):将修改过的信息写入文件

int T_Edit( char *stringTitle ); //输入要修改信息的的书的名字,并在文件中查找是否已存在该书的相关信息

int edit_Title( char *searcTitle, char *alter, int RecNo ); //修改书名

int edit_Author( char *searcTitle, char *alter, int RecNo ); //修改作者

int edit_Cate( char *searcTitle, char *alter, int RecNo ); //修改分类

int edit_House( char *searcTitle, char *alter, int RecNo ); //修改出版社

int edit_Time( char *searcTitle, char *alter, int RecNo ); //修改出版日期

/*删除图书信息***************************************************/

void dele_main();//删除的主函数

int T_Dele( char *stringTitle ); //输入要删除信息的的书的名字,并在文件中查找是否已存在该书的相关信息

int delete_record( char *fileName, int recordNo, int recordLength ); //删除的子函数,将要删除的信息删除掉

/*查询图书信息*******************************************************/

//查询主函数

void search_main();

void searchBook(); //以书名为关键字查询

void searchAuthor(); //以作者为关键字查询

void searchCate(); //以类型为关键字查询

void searchHouse(); //以出版社为关键字查询

void searchId(); //以I D 为关键字查询

int getid( char *fileName, char *bk_id, struct book *bk ); //查询I D 是否在文件中是否已经存在

int gettitle( char *fileName, char *bk_title, struct book *bk ); //查询书名是否在文件中是否已经存在

int getauthor( char *fileName, char *bk_author, struct book *bk, int booknumber ); //查询作者是否在文件中是否已经存在

int getcategorie( char *fileName, char *bk_categorie, struct book *bk ); //查询类型是否在文件中是否已经存在

int gethouse( char *fileName, char *bk_house, struct book *bk ); //查询出版社是否在文件中是否已经存在

/*流水账************************************************************/

//流水账主函数

void water_main();

void bookIn(); //书籍入库

void bookOut(); //书籍出库

int inputDay( char *stringDay); //日期录入

//流水查询主函数

void search_watermain();

int search_wId(); //以I D 为关键字查询

int search_wDay(); //以日期为关键字查询

int findRecord_w_Id( char *fileName, char *w_id, struct water *w ); //以Id为关键字在[出入库]文件中查找是否已存在相关信息

int findRecord_w_Day( char *fileName, char *w_Day, struct water *w ); //以Day为关键字在[出入库]文件中查找是否已存在相关信息

/*录入结构体*********************************************/

struct book { //图书信息

char id[MAXID];

char title[MAXTITL];

char author[MAXAUTL];

char categorie[MAXCATE];

char time[MAXTIME];

int stock;

char house[MAXHOUS];

char music[MAXMUSI];

};

struct water { //流水账

char day[MAXDAY];

char Id[MAXID];

char titleEnter[MAXTITL];

int InOut; //入(出)库量

};

//定位

void gotoxy(int x, int y)

COORD coord;

coord.X = x;

coord.Y = y;

SetConsoleCursorPosition(hConsole, coord);

}

//111111111111111111111111111111111111111111111111111111111111111111111111111111111111 111111111111111111111111111111111111111111

//111111111111111111111111111111111111111111111111111111111111111111111111111111111111 111111111111111111111111111111111111111111

//ID录入

int inputId( char *stringId )

{

int iFlag = 0;

while( 1 ){

if( *stringId == 'q' ){

iFlag = 999;

break;

}

else if( strlen( stringId ) > 0 && strlen( stringId ) <= MAXID ){

iFlag = 1;

break;

}

else

break;

}

return( iFlag );

}

//书名录入

int inputTitle( char *stringTitle )

{

int iFlag = 0;

while( 1 ){

if( *stringTitle == 'q' ){

iFlag = 999;

break;

}

else if( strlen( stringTitle ) > 0 && strlen( stringTitle ) <= MAXTITL ){ iFlag = 1;

break;

}

else

break;

}

return( iFlag );

}

//作者录入

int inputAuthor( char *stringAuthor )

{

int iFlag = 0;

while( 1 ){

if( *stringAuthor == 'q' ){

system("cls");

break;

}

else if( strlen( stringAuthor ) > 0 && strlen( stringAuthor ) <= MAXAUTL ){ iFlag = 1;

break;

}

else

break;

}

return( iFlag );

}

//书籍类型

int inputCate( char *stringCate )

{

int iFlag = 0;

while( 1 ){

if( *stringCate == 'q' ){

system("cls");

break;

}

else if( strlen( stringCate ) > 0 && strlen( stringCate ) <= MAXCATE ){ iFlag = 1;

break;

}

else

break;

}

return( iFlag );

}

//出版社

int inputHouse( char *stringHouse )

{

int iFlag = 0;

while( 1 ){

if( *stringHouse == 'q' ){

system("cls");

break;

}

else if( strlen( stringHouse ) > 0 && strlen( stringHouse ) <= MAXHOUS ){ iFlag = 1;

break;

}

else

break;

}

return( iFlag );

}

//出版时间

int inputTime( char *stringTime )

{

int iFlag = 0;

while( 1 ){

if( *stringTime == 'q' ){

system("cls");

break;

}

else if( strlen( stringTime ) > 0 && strlen( stringTime ) <= MAXTIME ){

iFlag = 1;

break;

}

else

break;

}

return( iFlag );

}

//关联音频

int inputMusic( char *stringMusic )

{

int iFlag = 0;

while( 1 ){

if( *stringMusic == 'q' ){

iFlag = 999;

system("cls");

break;

}

else if( strlen( stringMusic ) > 0 && strlen( stringMusic ) <= MAXMUSI ){ iFlag = 1;

break;

}

else

break;

}

return( iFlag );

}

//存盘

/************************************************************************** * 自己编写的插入新记录的通用函数

* 函数名:insert_record()

* 输入参数:

* char *fileName 文件名

* char *newRecord 要修改记录的内容

* int recordLength 单个记录的长度

* 返回值:修改记录成功,返回0;失败,返回-1。

***************************************************************************/ int insert_record( char *fileName, void *newRecord, int recordLength )

{

int iret = 0, flag = 0;

FILE *fp;

//调用标准函数,打开文件

if( ( fp = fopen( fileName, "a+" ) ) == NULL ){

printf( "Open File [%s] Error", fileName );

flag = -1;

return( flag );

}

//调用标准函数,将结构体中的变量,写入文件

iret = fwrite( newRecord, recordLength, 1, fp );

if( iret == 0 ){

printf( "Insert File error. ErrorCode [%d] filename[%s]", iret, fileName );

flag = -1;

fclose( fp );

return( flag );

}

fclose( fp );

return( 0 );

}

//录入主函数

void addbook()

{

int iRet = 0 ;

int iFlag = 0;

char choice[2];

struct book bk;

system("cls");

while( 1 ){

memset( &bk, 0x00, sizeof( struct book ) );

printf("返回至菜单(q)");

printf ("\n请输入ID:");

do{ //ID录入******************************************

scanf("%s", bk.id);

iRet = inputId( bk.id ); //判断Id录入是否成功

if( iRet == 1 ){

printf("合格!!\n");

break;

}

else if( iRet == 999 ){

break;

}

else{

printf("输入错误,请重新输入:");

}

}while( iRet != 1 );

if( iRet == 999 ){

system("cls");

break;

} //ID录入结束****************************************

printf ("\n请输入书名:"); //书名录入******************************************

do{

scanf("%s", bk.title);

iRet = inputTitle( bk.title ); //判断书名录入是否成功

if( iRet == 1 ){

printf("合格!!\n");

break;

}

else if( iRet == 999 ){

break;

}

else{

printf("输入错误,请重新输入:");

}

}while( iRet != 1 );

if( iRet == 999 ){

system("cls");

break;

} //书名录入结束****************************************

printf ("\n请输入作者:"); //作者录入

******************************************

do{

scanf("%s", bk.author);

iRet = inputAuthor( bk.author ); //判断作者录入是否成功

if( iRet == 1 ){

printf("合格!!\n");

break;

}

else if( iRet == 999 ){

break;

}

else{

printf("输入错误,请重新输入:");

}

}while( iRet != 1 );

if( iRet == 999 ){

system("cls");

break;

} //作者录入结束****************************************

printf ("\n请输入书籍种类:"); //种类录入******************************************

do{

scanf("%s", bk.categorie);

iRet = inputCate( bk.categorie ); //判断种类录入是否成功

if( iRet == 1 ){

printf("合格!!\n");

break;

}

else if( iRet == 999 ){

break;

}

else{

printf("输入错误,请重新输入:");

}

}while( iRet != 1 );

if( iRet == 999 ){

system("cls");

break;

} //种类录入结束****************************************

printf ("\n请输入书的出版时间:"); //出版时间录入******************************************

do{

scanf("%s", bk.time);

iRet = inputTime( bk.time ); //判断出版时间录入是否成功

if( iRet == 1 ){

printf("合格!!\n");

break;

}

else if( iRet == 999 ){

break;

}

else{

printf("输入错误,请重新输入:");

}

}while( iRet != 1 );

if( iRet == 999 ){

system("cls");

break;

} //出版时间录入结束****************************************

printf ("\n请输入书的出版社:"); //出版社录入******************************************

do{

scanf("%s", bk.house);

iRet = inputHouse( bk.house ); //判断出版社录入是否成功

if( iRet == 1 ){

printf("合格!!\n");

break;

}

else if( iRet == 999 ){

break;

}

else{

printf("输入错误,请重新输入:");

}

}while( iRet != 1 );

if( iRet == 999 ){

system("cls");

break;

} //出版社录入结束****************************************

printf ("\n请输入书的库存:"); //库存录入******************************************

scanf("%d", &bk.stock);

printf("\n是否要(添加相关音频Y/N):");

while(1){

scanf("%s", &choice);

if( choice[1] =='\0'){

if( choice[0] !='Y' && choice[0] !='y' && choice[0] !='N' && choice[0] !='n'){

printf(" 输入错误,请输入Y 或者N !\n");

continue;

}

else if( choice[0] == 'N' || choice[0] == 'n'){

break;

}

else if( choice[0] == 'Y' || choice[0] == 'y'){

iFlag = 1;

break;

}

}

else

printf(" 输入错误,请输入Y 或者N !\n");

}

while( iFlag == 1 ){

printf ("\n请输入书的相关音频:"); //相关音频录入******************************************

do{

scanf("%s", bk.music);

iRet = inputMusic( bk.music ); //判断相关音频录入是否成功

if( iRet == 1 ){

printf("合格!!\n");

break;

}

else if( iRet == 999 )

break;

else{

printf("输入错误,请重新输入:");

}

}while( iRet != 1 );

if( iRet == 999 || iRet == 1 ){

break;

} //出版音频录入结束****************************************

}

if( iRet == 999 ){

system("cls");

break;

}

insert_record( FILENAME, &bk, sizeof( struct book ) );//存盘

printf("\n已存盘!");

iFlag = Return( );

if( iFlag != 1 ){

system("cls");

break;

}

system("cls");

}

}

//1结束

//22222222222222222222222222222222222222222222222222222222222222222222222222222 22222222222222222222222222222222222222222222222222

int findRecord_bk( char *fileName, char *bk_id, struct book *bk )

{

int i = 1, iret = 0, flag = 0;

FILE *fp;

// system( "cls" );

//调用标准函数,以读方式,打开文件

if( ( fp = fopen( fileName, "r" ) ) == NULL ){

printf( "Open File [%s] Error", fileName );

return( -1 );

}

do{

//调用标准函数,从文件中按记录读入到结构体中

iret = fread( bk, sizeof( struct book ), 1, fp );

if( iret <= 0 ){

fclose( fp );

return( -1 );

}

/*注意改中文加库存*/

//调用标准函数,strncmp()判断传入的学号是否相等。如果相等则设flag=0,并跳出循环

printf("", bk);

if( strncmp( bk->id, bk_id, MAXID) == 0 ){

flag = 1;

break;

}

i++;

}while( !feof( fp ) );

//调用标准函数,关闭文件

fclose( fp );

if( flag == 1){

return( i );

}

else{

return( 0 );

}

}

//修改-------------------------------------------------------------------------------

void bookdate()

{

int iRet = 0;

int iFlag = 1;

char iMenuId[2];

system("cls");

//得到当前标准输出句柄

hConsole = GetStdHandle(STD_OUTPUT_HANDLE);

//菜单程序

while( 1 ){

system( "cls" );

gotoxy( 15, 5 );

printf("**~~~~~~~~~欢迎来到书籍信息管理系统~~~~~~~~~~**");

gotoxy( 30, 8 );

printf("1-图书信息修改");

gotoxy( 30, 9 );

printf("2-图书信息删除");

gotoxy( 30, 10 );

printf("3-返回上一菜单");

gotoxy( 20, 15 );

printf("输入您的选择:");

scanf("%s",iMenuId );

if( iMenuId[1] == '\0' ) iRet = 1;

if( iRet == 1 ){

switch( iMenuId[0] ){

case '1' :edit_record(); /*进入子系统--图书信息修改*/ continue;

case '2' :dele_main(); /*进入子系统--信息删除*/

continue;

case '3' :system("cls");

break; /*退出系统*/

default :

iFlag = 0;

system("cls");

gotoxy( 20, 13 );

printf("输入超出菜单选择范围\n");

continue;

}

break;

}

else if( iRet == 0 || iFlag == 0 ){

system("cls");

gotoxy( 20, 13 );

printf("输入超出菜单选择范围\n");

}

}

}

//修改文件

int updata_record( char *fileName, char *newRecord, int recordNo, int recordLength )

{

int iret = 0, flag = 0;

long position = 0L;

FILE *fp;

//第一步:调用标准函数:打开文件。注意打开文件形式要用“r+b”, 这样才能在程序中移动文件指针

if( ( fp = fopen( fileName, "r+b" ) ) == NULL ){

printf( "Open File [%s] Error", fileName );

flag = -1;

return( flag );

}

//第二步:计算要修改记录的首地址

position = ( recordNo - 1 ) * recordLength;

//第三步:移动文件指针到要修改记录的首地址

iret = fseek( fp, position, 0 );

//第四步:调用标准函数:将传入本函数结构体中的要修改的数据,写入文件中

iret = fwrite( newRecord, recordLength, 1, fp );

if( iret == 0 ){

printf( "\nUpdata File iret[%d] [%s] Error\n", iret, fileName );

}

else

flag = 1;

//第五步:关闭文件

fclose( fp );

return( flag );

}

//自己编写的修改信息的主控函数

void edit_record()

{

int RecNo=0, iFlag = 0;

char searcId[MAXID+2];

char alter[MAX+2];

//给已定义的结构体,分配内存空间

struct book bk;

system("cls");

do{

RecNo = T_Edit( searcId );

if( RecNo == 999)

break;

if( RecNo <= 0 ){

continue;;

}

findRecord_bk( FILENAME, searcId, &bk ); //读取文件信息

gotoxy( 1, 3 );

printf("原信息:");

gotoxy( 1, 5 );

printf(" I D:[%s]" , bk.id);

gotoxy( 1, 6 );

printf(" 书名:[%s]" , bk.title);

gotoxy( 1, 7 );

printf(" 作者:[%s]" , bk.author);

gotoxy( 1, 8 );

printf(" 分类:[%s]" , bk.categorie);

gotoxy( 1, 9 );

printf(" 出版社:[%s]" , bk.house);

gotoxy( 1, 10 );

printf(" 出版日期:[%s]" , bk.time);

gotoxy( 1, 11 );

printf(" 库存:[%d]" , bk.stock);

gotoxy( 40, 3 );

printf("修改(不修改,请输入[q]):");

gotoxy( 40, 5 );

printf(" I D:[%s]" , bk.id);

gotoxy( 40, 6 );

printf(" 书名:");

gotoxy( 40, 7 );

printf(" 作者:");

gotoxy( 40, 8 );

printf(" 分类:");

gotoxy( 40, 9 );

printf(" 出版社:");

gotoxy( 40, 10 );

printf(" 出版日期:");

gotoxy( 40, 11 );

printf(" 库存:[%d]" , bk.stock);

do{ //修改书名***********************************************

gotoxy( 53, 6 );

scanf( "%s", alter);

iFlag = edit_Title( searcId, alter, RecNo );

if( iFlag <= 0 ){

gotoxy( 36, 6 );

printf("错误!请重输书名:");

continue;

}

if( iFlag == 999){

gotoxy( 36, 6 );

printf(" 书名:");

break;

}

else

gotoxy( 36, 6 );

printf(" 书名:");

break;

}while( iFlag <= 0 ); //书名修改完成

do{ //修改作者***********************************************

gotoxy( 53, 7 );

scanf( "%s", alter);

iFlag = edit_Author( searcId, alter, RecNo );

if( iFlag <= 0 ){

gotoxy( 36, 7 );

printf("错误!请重输作者:");

continue;

}

if( iFlag == 999){

gotoxy( 36, 7 );

printf(" 作者:");

break;

}

else

gotoxy( 36, 7 );

printf(" 作者:");

break;

}while( iFlag <= 0 ); //作者修改完成*****************************************************

do{ //修改分类***********************************************

gotoxy( 53, 8 );

scanf( "%s", alter);

iFlag = edit_Cate( searcId, alter, RecNo );

if( iFlag <= 0 ){

gotoxy( 36, 8 );

printf("错误!请重输分类:");

continue;

}

if( iFlag == 999){

gotoxy( 36, 8 );

printf(" 分类:");

break;

}

else

gotoxy( 36, 8 );

printf(" 分类:");

break;

}while( iFlag <= 0 ); //分类修改完成

do{ //修改出版社***********************************************

gotoxy( 53, 9 );

scanf( "%s", alter);

iFlag = edit_House( searcId, alter, RecNo );

if( iFlag <= 0 ){

gotoxy( 34, 9 );

printf("错误!请重输出版社:");

continue;

}

if( iFlag == 999){

gotoxy( 34, 9 );

printf(" 出版社:");

break;

}

else

gotoxy( 34, 9 );

printf(" 出版社:");

break;

}while( iFlag <= 0 ); //出版社修改完成*****************************************************

do{ //修改发行日期***********************************************

gotoxy( 53, 10 );

scanf( "%s", alter);

iFlag = edit_Time( searcId, alter, RecNo );

if( iFlag <= 0 ){

gotoxy( 32, 10 );

printf("错误!请重输出版日期:");

continue;

}

if( iFlag == 999){

gotoxy( 32, 10 );

printf(" 出版日期:");

break;

}

else

gotoxy( 32, 10 );

printf(" 出版日期:");

break;

}while( iFlag <= 0 ); //发行日期修改完成

JAVA简单画板程序设计实验报告

JAVA期末画板实验报告 课程题目: 运用JAVA语言编写一个画板程序,这个画板要有画图,特殊图形绘制,颜色改变,画笔大小改变等功能。 设计思想: 1.进行界面设计 2.进行算法实现 3.运行调试 4.总结问题 设计过程: A.界面设计 新建一个Jframe容器,然后定义一个panel(Panel convas2),convas2是工具栏。用borderlayout布置容器的边框布局,将工具栏放在NORTH部分。完成界面设计。 add(canvas2,BorderLayout.NORTH); Panel canvas2 = new Panel(); 添加工具按键 Panel canvas2 = new Panel(); Button btn1 = new Button("直线"); Button btn2 = new Button("椭圆"); Button btn3 = new Button("矩形"); Button btn4 = new Button("清除"); Button btn5 = new Button("画笔"); Button btn6 = new Button("橡皮"); Choice choice = new Choice(); Choice choice1 = new Choice(); canvas2.add(choice); canvas2.add(choice1);

canvas2.add(btn1); canvas2.add(btn2); canvas2.add(btn3); canvas2.add(btn4); canvas2.add(btn5); canvas2.add(btn6); 在工具表中,有两个下拉菜单,分别收录画笔的大小和颜色。1.画笔的大小: choice1.add("1"); choice1.add("3"); choice1.add("5"); choice1.add("7"); choice1.add("9"); 2.画笔颜色 choice.add("黑色"); choice.add("蓝色"); choice.add("红色"); choice.add("黄色"); choice.add("绿色"); 3展示画板

简易画图板设计报告

设计报告:Graphic简易画 图板 -----韩伟谢程焜肖越周峰 电科二班

1设计目的 设计一个单文档类型的MFC AppWizard (exe)工程,工程取名为:Graphic。此程序将实现简单的绘图功能,包括点、直线、矩形、椭圆、扇形和连续线的绘制。并且能实现绘图的控制,包括线宽、线型和颜色的设置,图形的保存和打开以及笔刷的使用。 2 总体设计 设计图如图6

图6 3详细设计 首先,新建一个单文档类型的MFC AppWizard (exe)工程,工程取名为:Graphic。为此程序添加一个子菜单,菜单名称为“绘图”,并为其添加六个菜单项,分别用来控制不同图形的绘制。当用户选择其中的一个菜单项后,程序将按照当前的选择进行相应图形的绘制。添加的六个菜单项的ID及名称如表1所示。然后分别为这六个菜单项添加命令响应,本程序让视类(CGraphicView)对这些菜单命令进行响应,这六个响应函数的名称分别如表1所示。

在程序运行以后,当用户单击某个菜单项时,应该把用户的选择保存起来,以便随后的绘图操作使用。因此在CGraphicView类中添加一个私有变量m_nDrawType;用来保存用户的选择,该变量的定义如下所述: private: UINT m_nDrawType; 接着,在视类的构造函数中将此变量初始化为0,程序代码如下: CGraphicView::CGraphicView() { // TODO: add construction code here m_nDrawType=0; } 利用switch/case语句,来分别完成相应图形的绘制。当用户选择【绘图】菜单下的不同子菜单项时,将变量m_nDrawType设置为不同的值。程序代码如下:void CGraphicView::OnDot() { // TODO: Add your command handler code here m_nDrawType=1; } void CGraphicView::OnLine() { // TODO: Add your command handler code here m_nDrawType=2; } void CGraphicView::OnRectangle() { // TODO: Add your command handler code here m_nDrawType=3; } void CGraphicView::OnEllipse() { // TODO: Add your command handler code here m_nDrawType=4;

java画板课程设计报告

画板 一、需求分析 平时生活中,我们会需要处理一些基本的图像,也有可能需要花一些简单的图像,平时所使用的图形处理工具有PhotoShop、Windows 画图工具等,其中PhotoShop 是一款非常强大的图形处理工具,Windows 画图工具则是一款较为简单的画图工具,功能较为简单,用Windows画图工具,是一种比较简单与具有代表性的画图工具,虽然功能不够强大,但具有大多图片处理程序所必需的基本功能:铅笔画图、各种数学函数图形、填色、取色、橡皮擦等等。这次试验中我做的就是一个仿照windows画板的程序。 功能:1.利用graphics 类来向界面上画上相应内容 2.能够画出直线,矩形,多边形,椭圆形,圆矩形等 3.能够实现橡皮,刷子,喷枪等工具。 4.能够实验颜色的设置 5.能够保存图片和打开图片(当保存名一致时需提示) 6.界面尽量合理,可以仿照windows画板界面。 二、概要设计

流程图 画板软件类图 1.工具接口Tool: 从图中可以看到,工具接口Tool 定义了鼠标动作的四个方法,分别是拖动mouseDrapped()、移动mouseMoved()、松开mouseReleased()、按下

mousePressed()、点击mouseClicked()五个动作,并用String 类型的常量属性来定义工具的类型。这个接口只有一个实现类AbstractTool,而每个工具类 都是去扩展AbstractTool 类,在图中表现为Tool1、Tool2…….ToolN。 2.Tool的实现类AbstractTool AbstractTool 是Tool 的实现类,也是一个抽像类,所以并不能被创建,只能被继承。此类实现Tool 中定义的所有方法,并扩展了其它方法,让其子类继承或者重写。该类中为其他的工具类提供了大部分的实现,那么它的子类就可以不必再做重复的实现,只关心与本类相关的逻辑, 3.AbstractTool的子类 AbstractTool 一共有ArrowTool(箭头)、PencilTool(铅笔)、BrushTool(刷子)、EraserTool(橡皮擦)、LineTool (直线)、RectTool (矩形)、PolygonTool (多边形)、RoundTool (椭圆形)、RoundRectTool(圆矩形)、AtomizerTool (喷墨)、ColorPickedTool(颜色选择)11 个子类, 4. 界面类ImageFrame 这个画图工具的界面的主要放在这个类中实现 5. 业务逻辑类ImageService 除鼠标的画图功能外(画图功能由Tool 的实现类完成),初始化画板、图片的新建打开与保存、各种面板的显示与隐藏、颜色的编辑、整个界面的刷新、菜单等业务逻辑都放在这个类中实现, 对象,它并没有保存一些状态属性。 6 .文件选择类ImageFileChooser ImageFileChooser 类继承了JFleChooser 类,JFleChooser 是Java 提供的一个简单的文件选择机制,我们这里扩展这个类,是为了增加我们自己的文件过滤器。 三、运行环境、开发语言 Window xp 和elipse Java语言

Java画图软件设计报告

佛山科学技术学院 《可视化编程技术》课程设计报告 画图软件设计 学生姓名:周敏婷 学号: 2011914123 年级专业:11级教育技术学2班指导老师:容汝佳 学院:教育科学学院 广东★佛山 提交日期:2013年6月

目录 1. 前言 (2) 2.概要设计 (3) 2.1 开发环境 (3) 2.2 画图软件功能 (3) 2.3 界面设计 (3) 2.4 类的框架结构图 (4) 3. 详细设计 (4) 3.1 使用的JAVA类的说明 (4) 3.2 类的主要方法 (5) 3.2.1 颜色选择

器 (5) 3.2.2 控制画笔样式 (5) 3.2.3 选取颜色按钮的监听件类 (6) 3.2.4 设计总体认识 (6) 3.2.5 程序流程图 (7) 4. 运行结果 (7) 5. 测试分析 (8) 5.1 程序运行情况 (8) 6. 源程序 (8) 参考文献 (14) 设计总

结 (14)

摘要:该程序是一个图形界面的简单的java画图软件,具有良好的界面,使用人员能快捷简单地进行操作。该画图软件操作较为简单,只需要一直按着左键就能根据你鼠标移动的方面,画出你想要的图案。你也可以选择你自己想到的颜色和画笔的粗细。而且可以显示你当前的画笔的状态。界面为灰白对称。是一个非常简单的作图工具,让人能轻松上手。 关键字:java,画图类,方法,事件 1 前言 随着科学技术的不断发展,计算机已经成为我们工作学习和生活中不可缺少的工具。文本编辑器是个人计算机最司空见惯的应用程序了,在学习了Java语言之后,我决定使用Java语言编写一个简单的画图工具,可以实现简单的画图作图功能,满足日常基本的工作学习和娱乐需要。 Java是由Sun公司开发的新一代纯面向对象的网络编程语言。其目标是建立一种在任意种机器、任一种操作系统的网络环境中运行的软件,实行所谓的“程序写一次,到处运行”的目标。正因为如此,Java已成为当今Internet上最流行、最受欢迎的一种程序开发语言。 Java开发小组把Java按特性分为基本版、移动版、企业版,每个版本有一个软件开发包。Java基本版本叫Java 2标准版(Java 2 Standard Edition,J2SE),它包含建立Java应用程序或者是Applet 所需的应用程序编程接口(API)。Java 2移动版(The Java 2 Mobile Edition,J2ME)包含创建无线Java应用程序的API。还有Java 2 企业版(The Java 2 Enterprise,J2EE)是J2SE的增强版本,包含建立多层架构应用程序API。 Java语言是由C++语言发展起而来的,是一种彻底的面向对象的程序设计语言。作为一种纯面向对象的程序设计语言,它非常适合大型软件的开发。Java语言去掉了C++语言的一些容易引起错误的特性。Java语言的特点有:面向对象、跨平台、安全性、多线程和图

vbnetgraphic简单的画图程序

https://www.doczj.com/doc/f614481029.html, graphic 简单的画图程序 [vb] Public Class Form1 Dim DrawState As Boolean Dim PreX As Single Dim PreY As Single Dim eP As New Pen(Color.Black, 3) ' 构造黑色画笔,并将它赋给对象变量eP 'Dim g As Graphics = Me.CreateGraphics ' 在窗体上构造一块画布,并将它赋给对象变量g Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ' 将DrawState初始化为False,表示提笔 DrawState = False End Sub Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown ' 当鼠标左键被按下时,把DrawState设为True,表示落笔开始画线 Dim g As Graphics = Me.CreateGraphics If e.Button = Windows.Forms.MouseButtons.Left Then DrawState = True ' 设置画图状态 PreX = e.X ' PreX和PreY保存了线条的起点。 PreY = e.Y End If ' 当按住鼠标右键时,画一个直径为50的圆 If e.Button = Windows.Forms.MouseButtons.Right Then g.DrawEllipse(eP, e.X - 25, e.Y - 25, 100, 100)

软件工程JAVA课程设计报告

西安科技大学 软件工程课程设计报告 题目:画图板应用程序开发 班级 学号: 姓名: 2010年12月

目录 1 绪论 (3) 2 可行性研究报告 (3) 3 需求分析报告 (4) 4 总体设计报告 (7) 5 详细设计报告 (8) 6 系统实现报告 (12) 7软件测试报告 (32) 参考文献

1、绪论 1.1 目的和意义 用过微软Windows操作系统的人一定都对Windows自带的画图板非常熟悉了。同图像处理软件界的老大Photoshop比起来,它虽然不及Photoshop的功能强大,内容丰富,但是作为Windows一直以来都内带的附件程序,它具有小巧玲珑,简单实用等其他绘图软件所不具备的优点。同时它的风格也被许多其他的绘图软件所仿效。 作为一个软件工程专业的学生自己也想亲自动手编写一个属于自己的,简单实用的绘图程序。通过本次课程设计可以增加对整个流程的熟悉以及对程序组织结构和框架的理解,对以后开发和设计更大更复杂的程序无疑有更大的帮助。 任务 书写开发文档,分析和制定整个开发过程,然后开发一个自己的画图板应用程序。 2、可行性研究报告 进行可行性研究的方法 本应用程序可行性研究是通过对比windows自带的画板程序的方式进行的,对Windows 里面的画板进行分析研究,分析得出本应用软件应该实现的基本功能,并根据自己的能力进行了功能上的增加。 评价尺度 本软件在评价时应从以下几个方面进行分析: 开发时间应尽量短; 功能实现的代码应尽量少; 代码执行效率要高; 有较强的容错能力; 技术方面的可行性 系统现阶段的发展过程中,利用现有人力和物力是完全具备的能力开发出来的,作为阶段性产品,日后的发展空间大,实现方法逐步简单容易,所以画图板应用程序在技术上是完全可行的。 a.在当前的限制条件下,该程序的功能目标能达到; b.利用现有的技术,该程序的功能可以实现; c.由于能力的不足,现阶段的功能不够完美,还可以在日后完善; d.在规定的限期内,本程序能够完成; 法律方面的可行性 本程序不会在后台扫描用户的磁盘文件; 本程序为完全免费,没有任何盈利行为,而且仅在内部流通,不予推广,所以不涉及浸犯微软版权的行为,所以本软件完全合法。 软件服务条款要与中华人民共和国的法律解释相一致,一致同意服从高等法院所有管辖。如发生软件服务条款与中华人民共和国法律相抵触时,则这些条款将完全按法律规定重新解释,而其它条款则依旧保持对用户产生法律效力和影响。 经济可行行

java画板程序

简单的Java画板程序 import java.awt.*; import java.awt.event.*; import java.awt.image.*; import java.io.*; import javax.imageio.*; import javax.swing.*; public class huaban { JFrame f=new JFrame("画板"); //JPanel P1=new JPanel(); //JPanel P2=new JPanel(); JToolBar jtb=new JToolBar("工具"); DrawCanvas drawArea=new DrawCanvas(); int preX = -1; int preY = -1; int X=0; float con=1; int Econ=5; JButton btn0=new JButton(new ImageIcon("image/12.png"));//打开JButton btn1=new JButton(new ImageIcon("image/13.png"));//保存JButton btn2=new JButton(new ImageIcon("image/1.png"));//画笔 JButton btn3=new JButton(new ImageIcon("image/2.png"));//直线 //JButton btn4=new JButton("曲线"); JButton btn5=new JButton(new ImageIcon("image/3.png"));//椭圆 JButton btn6=new JButton(new ImageIcon("image/4.png"));//矩形 JButton btn7=new JButton(new ImageIcon("image/7.png"));//调色板//JButton btn8=new JButton("当前颜色"); JButton btn9=new JButton(new ImageIcon("image/14.png"));//橡皮JButton btn10=new JButton(new ImageIcon("image/6.png"));//清除JButton btn11=new JButton(new ImageIcon("image/8.png"));//黑色JButton btn12=new JButton(new ImageIcon("image/9.png"));//红色JButton btn13=new JButton(new ImageIcon("image/10.png"));//绿色JButton btn14=new JButton(new ImageIcon("image/11.png"));//蓝色JButton btn15=new JButton("1");//画笔大小 JButton btn16=new JButton("2"); JButton btn17=new JButton("3"); JButton btn18=new JButton("4"); JButton btn19=new JButton("1");//橡皮大小

java简易画图板

华北科技学院 课程设计说明书 班级: 网络B101 设计题目: 画图板软件开发和设计 评语:_________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ 评阅成绩:____评阅教师:_____ 目录 1 引言 (1)

1.1课程设计选题 (1) 1.2课程设计的目的 (1) 1.3本选题的设计背景 (1) 2 需求分析 (1) 2.1 功能需求 (1) 2.2 系统的开发运行环境 (2) 3 总体设计 (2) 3.1 系统体系结构设计 (2) 3.2系统功能模块及主要类设计 (3) 4 详细设计与实现 (6) 4.1 菜单栏模块 (6) 4.2 文字字型工具栏模块 (7) 4.3 工具栏模块 (8) 4.4 颜色选择面板模块 (10) 4.5 鼠标状态栏模块 (12) 4.6 画图区域以及整体布局模块 (13) 5 小结和展望 (15) 参考文献 (17) 附录 (17) 使用说明书 (17)

1引言 1.1课程设计选题 《画图板软件开发和设计》 1.2课程设计的目的 使学生巩固和加深以Java 语言为基础的面向对象编程技术理论知识的理解,提高实际动手编程能力的培养,掌握以Java为核心的应用软件开发方案,达到能独立阅读、编制和调试一定规模的Java程序的水平。 1.3本选题的设计背景 平时生活中,我们会需要处理一些基本的图像,也有可能需要花一些简单的图像,平时所使用的图形处理工具有 PhotoShop、Windows 画图工具等,其中PhotoShop 是一款非常强大的图形处理工具,Windows 画图工具则是一款较为简单的画图工具,功能较为简单,用Windows画图工具,是一种比较简单与具有代表性的画图工具,虽然功能不够强大,但具有大多图片处理程序所必需的基本功能:铅笔画图、各种数学函数图形、填色、取色、橡皮擦等等。所以这次课程设计我做的就是一个仿照Windows画板的程序。 通过画图板软件开发与设计,更深刻地体会java语言较之其他语言在图形用户界面的优势。熟悉java语言中常用的关于画图的各个类的功能和常用的方法(java图形用户界面中的众多函数与类的关系),并在实验过程中加深对java语言的理解与运用。 2需求分析 2.1 功能需求 对于绘图软件,应具备最基本的绘制直线,矩形框,圆形框,椭圆框等最基本功能,此外,要可以对绘制的图形进行修改;将绘制好的图形进行保存,打开以前保存的图形;在需要的时候,可以绘制实心矩形,实心圆形,实心椭圆等常见的几何图形。可

用c++编画板的实训报告

一实训目的 (1)培养分析问题、解决问题的能力 (2)培养考虑问题的周密性和逻辑思维能力 (3)培养实际动手能力 (4)培养C++知识的综合运用能力 二实训任务和要求 1.图形: 带颜色的图形。(增加选色功能) 线粗不同的图形。(修改线粗的功能) 块状图。(图形的填充色和边线颜色可以不同,由用户选择) 等等。。 2. 界面 工具栏,状态栏,改变鼠标,查看窗口等等 3. 编辑 在重新打开时和在正常情况下一样画图或者选中图形进行图形编辑。 4. 文件保存 EMF文件,导入位图文件成为一个(由位图填充的)矢量矩形等等。 5. 编辑 单个图像拖动,改变图形节点位置 能够进行基本的图形绘制功能:直线,圆、矩形和多边形; 数据保存功能,能够把图形数据保存到文件中; 简单的编辑功能:改变线条和填充颜色以及线宽; 三实训过程和内容 3.1需求分析 (1)认识C++编程软件 C++是一种使用非常广泛的计算机编程语言。C++是一种静态数据类型检查的,支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序

设计、制作图标等等泛型程序设计等多种程序设计风格。C++支持C语言的几乎全部功能,在语法上与C语言仅有极微妙的差别;C++语言原本不具备面向对象的设计功能,然而随着面向对象编程的概念的提出以及如Java等语言的发展成熟,C++语言也开发出了支持面向对象功能的版本,现在编程者常用的VC++就是一种面向对象的语言;C++强大(但容易失控的)模板功能使它能在编译期完成许多工作,从而大大提高运行期效率。STL(C++标准模板库,Standard Template Library);随着STL的不断发展,它已经逐渐成为C++程序设计中不可或缺的部分,其效率可能比一般的native代码低些,但是其安全性与规范性使它大受欢迎。 (2)计算机图形的认识 在计算机科学中,图形和图像这两个概念是有区别的:图形一般指用计算机绘制的画面,如直线、圆、圆弧、任意曲线和图表等;图像则是指由输入设备捕捉的实际场景画面或以数字化形式存储的任意画面。图像是由一些排列的像素组成的,在计算机中的存储格式有BMP、PCX、TIF、GIFD等,一般数据量比较大。它除了可以表达真实的照片外,也可以表现复杂绘画的某些细节,并具有灵活和富有创造力等特点,而与图像不同,在图形文件中只记录生成图的算法和图上的某些特点,也称矢量图。在计算机还原时,相邻的特点之间用特定的很多段小直线连接就形成曲线,若曲线是一条封闭的图形,也可靠着色算法来填充颜色。它最大的优点就是容易进行移动、压缩、旋转和扭曲等变换。 3.2 设计 (1)C++程序中的应用程序对象 (a)基于窗口的应用程序还是使用MFC比较多,所以主要介绍一下MFC。 CWnd窗口:它是大多数“看得见的东西”的父类(Windows里几乎所有看得见的东西都是一个窗口,大窗口里有许多小窗口),比如视图CView、框架窗口CFrameWnd、工具条CToolBar、对话框CDialog、按钮CButton,etc;一个例外是菜单(CMenu)不是从窗口派生的。CDocument文档,负责内存数据与磁盘的交互。最重要的是OnOpenDocument(读入),OnSaveDocument(写盘),Serialize(读写)CView视图:负责内存数据与用户的交互。包括数据的显示、用户操作的响应(如菜单的选取、鼠标的响应)。最重要的是OnDraw(重画窗口),通常用CWnd::Invalidate()来启动它。另外,它通过消息映射表处理菜单、工具条、快捷键和其他用户消息。 CDC设备文本:无论是显示器还是打印机,都是画图给用户看。这图就抽象为CDC。CDC与其他GDI(图形设备接口)一起,完成文字和图形、图像的显示工作。把CDC想象成一张纸,每个窗口都有一个CDC相联系,负责画窗口。CDC有个常用子类CClientDC(窗口客户区),画图通常通过CClientDC完成。 CDialog:对话框 CWinApp应用程序类:似于C中的main函数,是程序执行的入口和管理者,负责程序建立、消灭,主窗口和文档模板的建立。 CGdiObject及子类:用于向设备文本画图。它们都需要在使用前选进DC。 CPen笔:画线 CBrush刷子:填充 CFont字体:控制文字输出的字体 CBitmap:位图

用java实现的一个简单的画板程序

一个实现简单画板功能的java程序,可以画直线,长方形,椭圆,曲线。 主类 import java.awt.Color; import javax.swing.*; public class painter { public static void main(String [] args){ JPanel jpl = new Board(); JFrame painter =new JFrame(); painter.add(jpl); painter.setBackground(Color.WHITE); painter.setTitle("Painter"); painter.setSize(400,200); painter.setLocationRelativeTo(null); painter.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); painter.setVisible(true); } } 加了选择事件的画板 import java.awt.*; import javax.swing.*; import java.awt.event.*; @SuppressWarnings("serial") public class Choose extends Board{ JRadioButton jrb1=new JRadioButton("Line"); JRadioButton jrb2=new JRadioButton("Rectangle"); JRadioButton jrb3=new JRadioButton("Oval"); JRadioButton jrb4=new JRadioButton("Curve"); JButton jbt = new JButton("Clear"); public Choose(){ JPanel jp1=new JPanel(); jp1.setLayout(new GridLayout(5,1,5,5)); jp1.add(jrb1); jp1.add(jrb2); jp1.add(jrb3); jp1.add(jrb4); jp1.add(jbt); add(jp1); ButtonGroup group = new ButtonGroup(); group.add(jrb1); group.add(jrb2);

JAVA简单画板程序设计实验报告

J A V A简单画板程序设计 实验报告 Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】

JAVA期末画板实验报告 课程题目: 运用JAVA语言编写一个画板程序,这个画板要有画图,特殊图形绘制,颜色改变,画笔大小改变等功能。 设计思想: 1.进行界面设计 2.进行算法实现 3.运行调试 4.总结问题 设计过程: A.界面设计 B.新建一个Jframe容器,然后定义一个panel( Panel convas2), convas2是工具栏。用borderlayout布置容器的边框布局,将工具栏放在NORTH部分。完成界面设计。 add(canvas2,; Panel canvas2 = new Panel(); 添加工具按键 Panel canvas2 = new Panel(); Button btn1 = new Button("直线"); Button btn2 = new Button("椭圆"); Button btn3 = new Button("矩形"); Button btn4 = new Button("清除");

Button btn5 = new Button("画笔"); Button btn6 = new Button("橡皮"); Choice choice = new Choice(); Choice choice1 = new Choice(); (choice); (choice1); (btn1); (btn2); (btn3); (btn4); (btn5); (btn6); 在工具表中,有两个下拉菜单,分别收录画笔的大小和颜色。 1.画笔的大小: ("1"); ("3"); ("5"); ("7"); ("9"); 2.画笔颜色

简易地理板图(板画)绘画技巧

简易地理板图(板画)绘画技巧 地理板图又叫地理黑板图。是地理教师在教学过程中,凭借自己的记忆和熟练技巧,用简单的工具(如各色粉笔)和简练的笔法,把复杂的地理事物和现象迅速描绘在黑板上的简略地理图画。主要包括地理略图、形态图、剖面图和过程图等主要类型。其中,后三种又被称为地理板画。 一、学习简易地理板图(板画)绘画的意义 地理板图只取神似,不计细节,旨在抓住特征,突出重点,说明地理问题。在地理教学中具有十分重要的作用。 所有教学技术手段都有自身的价值和存在的意义。我们发展现代教学技术,并不是要抛弃一切传统的教学技术,而是要把现代教学技术和传统教学手段结合起来,努力挖掘所有教学技术手段的使用价值,积极促进各种技术手段之间的协同互补,从而促进教学技术体系整体协调发展。 二、简易地理板图(板画)速绘的基本要求 简易地理板图的绘画具有三要素,即略、像、快。评价地理板图的优劣,主要应从以下几个方面入手: 1.板图形式简略、美观 要求线条流畅、简练、清晰;色彩鲜明、爽目;富于表现性,使人看之悦目。切忌支离破碎,随手乱画,为此必须做好原图的简化工作。(图1、2)2.内容准确,重点突出 讲求地理科学性,明确图上各种地理要素之间的关系;突出所要表达的主要地理事物和现象。 3.作图迅速,与语言同步 要具有熟练的作图技巧,迅速成图;应与教学语言配合协调,同步进行。切忌为作图而作图。 图1 澳大利亚略图图 2 五带的划分 三、简易地理板图(板画)绘画技巧及训练 地理板图的速绘历来都被看成是少数人的天赋,对多数人来说,是可望而不可及的。传统的板图描绘技法大都落笔只画一点、一线,费时多、效率

低,且技法难以掌握。许多教师 往往因画跟不上讲,影响教学进程而放弃。近年来,随着教学改革的不断深入,有关专家已大胆地改革了传统的绘图方法,在作图速度上有很大突破,形成了简单易学的作图技巧。归 纳起来大致可包括绘图工具的制作、笔法的运用和作图要领等。 1.工具的制作 简易板图绘画技巧大大提高了作图的速度,落笔成片,一笔多点、多线,从而使作图速度提高了几倍,乃至几十倍之多。诀窍之一在于多功能彩色粉笔的加工制作。 (1)刻笔 是用小刀或小锯条将粉笔刻成所需要的形状。又可分为纵刻和横刻两种方式(图3- 1.2)。 ①纵刻笔:沿粉笔的长轴方向纵刻成沟痕,成纵刻笔。可用来画河流、交通线等半比例符号。 ②横刻笔:沿粉笔的短轴方向横刻成几个“凹”形沟,相同排列,成横刻笔,可用来画略图轮廓范围符号、地层剖面、云雨、水体、植物、动物等。 (2)排笔 将各色粉笔依次排列,用绳扎紧,做成各种排笔。可用来画各种地层、沼泽、树冠等,功效可提高数倍(图3一3)。 (3)捆笔 将粉笔叠放成捆,用绳扎紧,成捆笔。用来画沙漠、戈壁、泥质海岸、波浪、沉积地层、沼泽、动物身上的圆块状斑纹、植物的累累果实等(图3-4)。 图3 多功能彩色粉笔

Java实现简单的绘图软件

项目效果图: 项目源代码: import java.awt.*; import java.awt.event.*; import java.awt.geom.Ellipse2D; import java.awt.geom.Line2D; import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.*; import javax.swing.filechooser.FileNameExtensionFilter; /* author: 蒋冰*/ public class ImageDraw { private int typeFlag = 1; private int endFlag = 1; private int strokeTemp = 1; private Color color = Color.black;

private BasicStroke stroke = new BasicStroke(); private float pre_x = 0; private float pre_y = 0; private float start_x = 0; private float start_y = 0; private float start_X = 0; private float start_Y = 0; private float end_x = 0; private float end_y = 0; private float width = 0; private float height = 0; private final int AREA_WIDTH = 700; private final int AREA_HEIGHT = 400; private Line2D.Float line; private Rectangle2D.Float rect; private Ellipse2D.Float ellipse; private File imageFile; BufferedImage image = new BufferedImage(AREA_WIDTH , AREA_HEIGHT , BufferedImage.TYPE_INT_RGB); Graphics2D g2 = (Graphics2D) image.getGraphics(); private JFrame frame = new JFrame("简单手绘程序"); private DrawPanel drawArea = new DrawPanel(); JButton buttonShowColor = new JButton(""); public void init(){ g2.fillRect(0 , 0 ,AREA_WIDTH , AREA_HEIGHT); g2.setColor(Color.black); drawArea.setPreferredSize(new Dimension(AREA_WIDTH , AREA_HEIGHT)); drawArea.addMouseMotionListener(new MouseMotionAdapter() { public void mouseDragged(MouseEvent e) { do_mouseDragged(e); } }); drawArea.addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e1){ do_mousePressed(e1);

操作简易的化学画图软件(DOC)复习过程

操作简易的化学画图软件 ----ChemWindow 一、分子式、简式的书写: ①按下键盘上的Caps Lock 键,点击键后再点击Label键,在文档中输入H2SO4 即可得到:;同理可写出有机分子式,在必要的时候加上括号:如输入CH3(CH2)3CH3时候可得到: ②检查:运行“Other”菜单下的“Check Chemistry”和“Check Spelling”检查结构式,保证正确性。例如:写一个错误的戊烷的分子式:,选中这个分子式,运行Check Chemistry(或按下F10键),弹出以下对话框: 语句“The valence is not correct.”意思是:化合价不正确。若分子式用于特殊场合,点击“Ignore”或“Ignore All”按钮可以忽略错误,即保持错误的状态。 二、离子式的书写: 数字在英文字母之前或之后输入,系统默认为下标;但数字在“-”或“+”之后为上标;先输入数字,后输入“-”或“+”,则数字为下标。如硫离子的书写: 输入“SO42-”显示为“”,这显然不是我们需要的,正确的操作是先输入“SO4-2-”后再删除前一个“-”即可得到。 切换到中文输入法也可以输入中文,用按钮可设置上下标:如 ①在大写状态下,点击按钮,写出硫酸的分子式: ②当光标停在下标“4”时,点击下标按钮,输入(浓) “Caption”工具是另外一种文字输入工具,但不能识别上下标,只要用于中文标题或者大写字母的输入。 三、其他 1.高聚物先写出高聚物的单体,再单击中括号,在文档中拖放出一个 中括号,适当缩放,在右下角的方框中填入“n”最后将单体放入:如聚氯乙烯的书写:

Java画板实验报告

二、Java画板的设计 一、实验名称及其要求 A、实验名称:Java画板的设计 B、实验要求: 1.实验目的:图形界面设计。 熟悉java.awt包中的组件,掌握图形界面设计方法,理解委托事件处理模型。 2.实验要求: (1)设计图形界面添加菜单:窗口上添加各种组件及菜单,并处理组件及菜单的事件监听程序。 (2)实现画板的基本功能。 二、程序设计 本程序完成的是一个类似于Windows画图板的绘图程序。由于不是开发和设计专业的绘图和图像制作软件,所以,完成的程序的简单功能包括以下几项: 1.新建一个空白图形文件:用于绘制新的图形。 2.打开或保存一个图形文件,便于对图形文件的管理。 3.绘制一些基本的画图组件:直线、矩形、实心矩形、椭圆、实心椭圆、圆、实心圆、圆角矩形、实心圆角矩形等。 4.可以用鼠标在绘图面板上单击拖动进行随笔画。 5.橡皮擦:可以将已绘制好的图形擦掉。 6.添加文字:可以在绘图区域内添加文字。 7.选择文字的字体:通过一个下拉式的选择条,可以选中所需要的字体。本程序中包括:宋体、隶书、华文彩云、仿宋_GB2312、华文行楷、方正舒体、Times New Roman、Serif、Monospaced、SonsSerif、Garamond。当然,在下面的的程序分析中可以看到,由于我们灵活设置了字体数组,是的可以随意添加系统支持的任何字体。大大方便和简化了程序设计。 8.选择文字的字体风格:通过两个复选框按钮,可以选择需要的字体风格,包括:粗体、斜体,使用者有三种选择方式,包括:①同时选中两者、②只选择其中一种、③两者都不选中。 9.设置画笔的颜色:可以选择当前绘制图形的画笔颜色,让图形更加丰富多彩、生动活泼。 10.设置画笔的粗细:该选项在作用于基本图形组件和文字时,它的效果是不一样的。①当作用于绘制图形组件时,它的作用是改变画笔绘制线条的粗细;②当作用于文

JAVA实验报告 简单绘图程序

实验三绘制图形 一、实验目的 学会JButton的使用,能进行JButton的基本操作,能使用JButton构造一个图形界面框架通过实验熟悉swing图形用户界面程序设计熟悉java中的事件处理模型,每个事件动作代表的意义进一步提高编程能力,学会独立思考,学会上网查找资料决问题。 二、实验内容 设计一个程序,该程序能够绘制基本的图形(包括圆形、矩形、直线等);要求有一个简单易操作的用户界面(包括菜单、按钮等组件)。编写的程序要求能够实现保存和读取的功能。 三、实验代码 Main.java import ; import ; import ; import import import import winpaint.WinToolBar; import winpaint.windowsPaint; public class Main { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub JPanel paintWin = new windowsPaint("画图"); paintWin.setBounds(0, 30, 1000, 1000); paintWin.setLayout(null); paintWin.setVisible(true); JToolBar tool = new WinToolBar((windowsPaint)paintWin); tool.setBounds(0, 0, 1000, 30); tool.setVisible(true); JFrame frame = new JFrame();

相关主题
文本预览
相关文档 最新文档