[QUOTE=mirwangjun]#include <stdio.h>
: d; {; B5 G' u! G% Z2 m #include <graphics.h>
2 s( P, ~! t6 S) t #include <math.h>
, o: r; o, h, s #include <dos.h>; q7 T! ^3 c2 I' {* _2 [2 N' a* ~! I
#include <bios.h>( H) p. j) `" I( ^# `, c
#include <ctype.h>/ U+ W+ p: `, q& Q0 X
#include <process.h># G/ d: m/ f% m$ q0 K- m
#include <conio.h>
5 L% |( M. g0 n& z! B
% N! h9 X2 M+ t4 j #define COLOR WHITE
0 U2 |& I5 k& M2 I/ y( P #define F1 59
' p; _: s) q3 S; r0 A- b9 [+ a #define F2 607 M+ I& a3 D1 `8 x+ @- f5 j# u
#define UP 720 G8 i6 M ^- g. W, R# e5 G% l
#define DOWN 80
5 ^/ H3 m, _3 W9 r: _1 Z# U5 d% E F #define LEFT 75
4 b. J# j) B+ ?0 ?4 U #define RIGHT 777 d# r a2 n5 _ t/ y" N' \2 ^/ s
#define HOME 71
3 {. Q( X1 z; E* J% @9 u #define END 79+ ~+ f/ m6 M" Y, ]
#define PAGEUP 73
) g3 H0 ]7 _& Z6 Q$ S ]# q5 |5 ~ #define PAGEDOWN 81
0 A& D' b0 D; ^9 H7 q
! x; v7 O* x3 M8 X; r/ r void Menu(void);6 a- q- h2 N+ e/ u$ Y
void Save(void);4 U& u: A. A7 p" Q G4 R( K
void Load(void);
* e9 k' X, P3 A0 E void Xhairs(int a,int b);. p5 J0 z3 L+ ~. F3 I
5 W2 O" b1 d; m x* T3 P8 V! p union k
' U' r/ H$ c# f) O' ~+ a6 ]8 H {/ G/ |4 K4 {: g% ^* b; n
char c[2];- Q4 O/ i/ M- S. s7 Z7 d0 Q$ f
int i;2 D7 E0 l: n1 E1 F' k
};* _6 A" I1 ~& y; [0 Z
typedef union k KEY;: v4 Z- w& i: A1 c' E' J
KEY key;
( {' P* X; _( ~$ ]) Z6 G struct dot
: k" j- O2 ]$ v, k {- o! k0 z! w. `: m
int x;
* e9 Q$ w. m U int y;
! r$ w, n2 F2 I5 F7 h };
1 U" ?: Z' W; s2 `1 ]) h! O typedef struct dot DOT;! H4 R' [% H. C0 d2 U% ?$ U/ q
DOT dis;
- y& q. V" C: v6 ?$ `4 a0 j+ I% ^4 g
1 B! q6 D) i2 R1 X7 q main()/ y; j. D* k+ y! ?6 z& e
{* x0 D; m& A5 X
int inc=1,k,j,m,r;
' s2 |+ ~1 x" I; X int driver,mode;
- _! h- Q% J/ c int again=1;% o. n6 p3 U! p( k6 j' k9 A
DOT firstdot,secdot;! B( `( k* A& n0 j: w" i
& Q: M3 ~( W2 g- k2 ~. q dis.x=200; u2 j0 r" Q( w8 f
dis.y=200;
3 F# k/ K8 {: l1 v }% N driver=DETECT;8 |% x, i- q$ Q- ~1 l$ J) j/ j
mode=VGAHI;2 q& n6 a/ e0 W, s: Z
initgraph(&driver,&mode,"c:\\bc\\bgi");
0 D% `( @$ M; y( Y2 S- |/ e* L % Y2 j, _* v M o: S* H
setbkcolor(BLUE);
+ F' C2 a. n$ T1 k: \ cleardevice();
2 J4 u4 ^ T! F5 c( ] setcolor(YELLOW);' o( J* c9 T6 i) i' z# l
Xhairs(dis.x,dis.y);( K$ H; m* l: Z6 z3 j y, e. R, r
- C. x; c. ~, `- Z6 {
while(key.c[0]!='q')
0 h4 H V1 x6 l' C0 r+ J {0 J" N; G3 m1 X8 B6 H
Menu();
0 h* q8 t- Q0 J A! f% b, f7 o / q5 l! {! o8 |" O \9 D
key.i=bioskey(0);
V2 x, @+ ]3 z2 G9 D- a. h% P# Z4 L ) G3 g: v) a d5 O
if(!key.c[0])$ F" m6 u* i: W8 u* o, r9 h
{4 H6 c9 j% ^4 ?
Xhairs(dis.x,dis.y);+ l: f `4 K, u2 P
switch(key.c[1])
" q: k+ M# D2 h {4 T* r6 l: d+ |' C8 ^# ^0 d
case LEFT: dis.x-=inc;& p% @# ?4 }; M% l' ^9 `
break;
! k# Z# j; l4 N, N# ^ case RIGHT: dis.x+=inc;
! s5 d6 y C/ O& ]& d; [6 e4 Y break;/ v& a8 n" h3 P! [" v2 M' \
case UP: dis.y-=inc;
4 g0 V, S3 ?$ k break;: e7 V& s! |# k8 w6 N% p* l
case DOWN: dis.y+=inc;
6 A$ }/ l5 W9 v1 [4 c& ]$ n break;
" W" K* D4 a9 e, @( j8 T) \ case HOME: dis.x-=inc;- K: ^- Z: d! K/ H$ @* k% R
dis.y-=inc;1 x8 k9 J* s V* V
break;
, z; O4 ~, g# u+ c case PAGEUP:dis.x+=inc;
. ]/ a! m; j2 @7 }: L- K dis.y-=inc;. ^: g2 B# ~9 y* H7 Z/ j& U
break;% R( Y. C$ Q7 t* a
case END: dis.x-=inc;$ r- a, G. E, A( B$ q- f% v1 r1 L
dis.y+=inc;4 D/ c. \2 l+ C0 X
break;/ b8 c0 Y! j, w3 B' C# Z& ?
case PAGEDOWN:dis.x+=inc;3 O0 D& W% A' A
dis.y+=inc;6 C$ L; x2 V) n
break;) Q; ^) F0 _5 r
case F1: inc=1;: S* W1 ?- ]- Y8 d* w
break;7 L5 s' [% p1 Y+ Z2 y
case F2: inc=5;
% G: ?9 h: g+ v n( a6 _ break;
) H) Z/ B! e. X, @* O# d/ h }
" ~8 q0 p% ~. Y; |, m Xhairs(dis.x,dis.y);
: m3 Z% h5 K, D/ N- ^! R. } }" l( P. K. S! v' O# n5 @+ R( C- A
else9 {( V7 n( l6 P& T y! O$ s* q
{/ J; a5 `' t5 W
switch(tolower(key.c[0]))
& `' a: r' u& A7 D( h { h' X1 a- W& ^ T& w* @
case 'a': putpixel(dis.x,dis.y,COLOR);$ V5 y! \. K T* F- Q
firstdot.x=dis.x;! A8 h; L3 F: w; O) _3 a4 J% {" R
firstdot.y=dis.y;; `+ R: b0 W, I. { ?
break;3 R+ }3 w |" m$ i" w
case 'b': putpixel(dis.x,dis.y,COLOR);
* p& n5 t' I4 U7 M0 @ secdot.x=dis.x;
3 T5 o" R% S- r4 P5 U+ f, A secdot.y=dis.y;4 [8 {3 j6 h+ |$ |- f+ P
break;
) C' b+ g: U: m& y) D+ |% U& X case 'l': line(firstdot.x,firstdot.y,secdot.x,secdot.y);
# F9 i/ i% P$ b/ j' ~1 q" u break;
0 j, t0 c0 k7 g6 r case 'o': r=sqrt(fabs((secdot.x-firstdot.x)*(secdot.x-firstdot.x)+(secdot.y-firstdot.y)*(secdot.y-firstdot.y)));
/ O4 L9 j I. T% Y g) Z circle(firstdot.x,firstdot.y,r); break;
: {, |8 D9 S s. D6 t. w case 'h': rectangle(firstdot.x,firstdot.y,secdot.x,secdot.y);8 G1 B0 m! R) n, m3 @, ~4 m
break;
5 U0 t+ g; D: e( V case 'c': cleardevice();Xhairs(dis.x,dis.y);& s/ {$ {( B: l7 G; ~% I
break;6 I5 o. W3 A5 z/ m: [- k, B
case 'w': Save();. F1 Y- s, G$ F5 |4 l0 ~. q* j+ [5 t$ A
break;# O1 P& l3 i+ A4 s" n
case 'r': Load();
. K* `# E z& x2 E6 ~. ?% ~8 \( ?' _ break;
A0 m. w/ x/ I3 C+ W6 O4 z) g }
/ C- s, _* k- J. P2 A 7 G1 @7 Y ^' l
}
/ y2 c0 Q1 O6 R8 Q
: E8 Y( B- U v- c4 u }' T. n1 H$ S( i' C. |, P+ M
closegraph();! R% O8 C3 k# w- R# H0 v
}% w: R! [& _# _2 X1 v0 {1 `1 {2 P
+ S2 M1 Y! G7 a void Xhairs(int a,int b)$ P# e! f, X7 g K& @6 H' X
{
' `& p( T+ h; [9 N int i;
: p5 S: L: w7 Z6 c) e for(i=a-5;i<=a+5;i++)
( G5 K6 I5 m& Q) i1 X1 E) d, { putpixel(i,b,15^getpixel(i,b));
# I9 Z7 q* p) |: q! J+ t6 M
0 r- S3 Z/ T) Q3 q, z1 I for(i=b-5;i<=b+5;i++)
, t" y( c( ]: x' b" g5 C3 z putpixel(a,i,15^getpixel(a,i));
2 i3 V4 `$ t) K }
7 L" N" V' P q2 [* e void Menu(void)
/ B9 w$ D/ I2 E5 e3 e# L! c {* s) z5 s1 S' w: M& }/ x2 @: o* k! k
#define STARTX 101 b/ J& Y8 Q: ]0 G
#define STARTY 22* O0 M5 S) l" O- Y9 T
#define DISTANCE 30* E( h" s# n. e! y+ n, E
9 l1 t7 x8 r& M0 \8 J7 C int i;# p3 v$ k1 ]& b5 t, F5 B
char *menu_name[]={"a:start point.","b:end point.","l:draw line.","o:draw circle.","h:draw box.","c:clear screen.","F1:step=1.","F2:step=5","Home Pageup","End PageDown.","w:save graph","r:load graph","q:quit"};
5 z: z/ _5 N7 v; F% a4 a5 n; t. s
S, a! F {* D: f setcolor(WHITE);
D4 w( o1 X, N rectangle(5,5,150,470);
: F. s9 A7 l1 E4 `+ ~" ]0 w5 { rectangle(155,5,635,470);
2 T. b' j5 I- ~+ \' L. g setcolor(LIGHTBLUE);
1 v3 G" U* D! i Q1 z6 l settextstyle(TRIPLEX_FONT,HORIZ_DIR,2);
$ r9 E* D5 l# ]) T q' i( F7 b# P outtextxy(36,STARTY,"menu");
3 V& l4 D# W4 D" ~( i7 m+ b- [8 J setcolor(YELLOW);
5 g! F6 Z& B7 U J5 k settextstyle(DEFAULT_FONT,HORIZ_DIR,1);
& a3 F2 j* H3 U* s0 T- }# F
B0 D- i% ~3 r# c4 x! B for(i=0;i<=14;i++)
6 x$ T5 \) B9 E* x outtextxy(STARTX,STARTY+(i+1)*DISTANCE,menu_name);" I% n. p7 ^7 [1 i, v' ]
}6 S' a" f# Q/ w, X
void Save(void)
4 p5 ?" t4 Q& F5 p5 t1 f5 v {, H* \* T$ \0 [( t2 ]# [8 ^- [2 B
int i,j;
7 s m, S( _- D+ v( }" F2 ?% h FILE *fp;9 h0 U! j7 q ~# [: O6 I
8 ^7 K* L- E9 _! u. g
if((fp=fopen("graph.dat","w+"))==NULL)
5 W& Z8 }, H2 `/ L7 S* ]5 q {, D4 O8 F8 u8 I2 m w6 K" p
printf("cannot open this file!");
+ g; Z4 w# R$ }6 n% Y& P exit(0);
' R; Q0 j( Y; M0 M9 s }/ s* H0 k: N: _, ^8 q2 ~0 I
for(i=5;i<=470;i++)0 |) D2 ?, j7 n! P: P! T9 I
{7 c8 f: l! Q9 Z4 n4 R
for(j=155;j<=635;j++)' L, M& n: w& Z
{ R# x I; O6 w: B, m8 |. ^; @0 i
fputc(getpixel(j,i),fp);" g( t" k+ Y3 w$ H
}
3 z4 s9 R7 w4 ~; N9 f+ Q/ l5 a! u3 A }
4 M7 w; z% ]' i6 R; `! D fclose(fp);4 v! C) E% A2 t. }: P) C
outtextxy(260,471,"save over!");
8 ]1 x# i1 \* D# U }( c+ y: Z; q, k( \' f* ]! a: p% G* I
4 q X/ U, p7 A& r' e
void Load(void)1 n, l' o3 G. i( o5 F1 Q
{4 e) b5 m8 u7 A5 r: J" c
int i,j;, d3 O l2 u2 W5 |& L: G, V
FILE *fp;) G' \. s2 L: q) }- S/ |/ @
9 u0 \+ r; `3 F" v3 h& L5 R if((fp=fopen("graph.dat","r+"))==NULL)3 y1 p) G. ]6 u, w
{
) J+ l4 C' B) h" ]" k2 G. _ printf("cannot open this file!"); z8 n3 W# C* u* b* N
exit(0);- y" q( _: P7 j
}0 W4 e% _8 k1 j7 f" M! @' |9 U
outtextxy(280,471,"loading......");
% L ~. m( U/ ]' d4 ~ for(i=5;i<470;i++): E" `- O, {& Z4 G
{/ p$ j5 D1 }) l5 E0 x7 U y
for(j=155;j<=635;j++); V7 t0 z7 h( D0 q
putpixel(j,i,fgetc(fp));
8 Y3 d6 p1 O1 z4 x }
! q! _- R3 Y7 H1 L! j( ~ fclose(fp); s C" g1 g a- Q0 X. j0 k
outtextxy(368,471,"over");
$ b$ c* G. i0 I; a1 a" ~ }
8 A: P* f. C1 g5 P8 V# Z 哥哥,看看我的这个程序,帮我改一下这个程序,实现在画图的时候可以选者颜色~!~~~~[/QUOTE] 这不是windows下的程序吗???
我们自己的计算机科学论坛:http://bestbbs.go.3322.org
我们的论坛QQ群: 28041468
论坛刚刚成立,希望大家有空的时候来看看.