請問Image1MouseMove下連續繪點問題? |
答題得分者是:ikk
|
shanesss
一般會員 發表:14 回覆:18 積分:6 註冊:2008-08-19 發送簡訊給我 |
各位大大好
我想製作一個類似小畫家的鉛筆工具, 能在Image上隨意繪出圖形, 但是繪圖的時候, 只要滑鼠移動快一點, 中間會有一些點漏掉, 不像小畫家中的如此順 請問這是要設定哪裡呢? 程式碼如下: [code cpp] void __fastcall TForm1::FormCreate(TObject *Sender) { Image1->Canvas->Brush->Color=clBlack; //底色 Image1->Canvas->Rectangle(0,0,500,500);//繪 } //--------------------------------------------------------------------------- void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { Image1->Canvas->Pixels[X][Y]=clRed; } //--------------------------------------------------------------------------- [/code] 謝謝各位大大 |
ikk
尊榮會員 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
|
shanesss
一般會員 發表:14 回覆:18 積分:6 註冊:2008-08-19 發送簡訊給我 |
|
ikk
尊榮會員 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
|
shanesss
一般會員 發表:14 回覆:18 積分:6 註冊:2008-08-19 發送簡訊給我 |
|
5515531
一般會員 發表:19 回覆:44 積分:12 註冊:2008-04-16 發送簡訊給我 |
這是我用OPENGL寫的一個小畫家
不知道是不是你要的!! [code cpp] void __fastcall TForm1::Timer1Timer(TObject *Sender) { OpenGLAPPanel1->Repaint (); } //--------------------------------------------------------------------------- void __fastcall TForm1::OpenGLAPPanel1Init(TObject *Sender) { glClearColor(1.0f, 1.0f, 1.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glClearDepth(1.0f); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormActivate(TObject *Sender) { md = 0; glClearDepth(1.0f); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); glClearColor(1.0f, 1.0f, 1.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glTranslatef(-400,300,-725); } //--------------------------------------------------------------------------- void __fastcall TForm1::OpenGLAPPanel1Resize(TObject *Sender) { if (OpenGLAPPanel1->Height==0) { OpenGLAPPanel1->Height=1; } glViewport(0,0,OpenGLAPPanel1->Width,OpenGLAPPanel1->Height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45.0f,(GLfloat)OpenGLAPPanel1->Width/(GLfloat)OpenGLAPPanel1->Height,0.1f,1000.0f); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluOrtho2D( 0, 800, 0, 600 ); } //--------------------------------------------------------------------------- void __fastcall TForm1::OpenGLAPPanel1Paint(TObject *Sender) { glLoadIdentity(); glTranslatef(-400,300,-725); glEnable(GL_CULL_FACE); if (md==1 && mm==0 && ms==1 ) { glColor3f(r,g,b); glBegin(GL_LINES); glVertex3f(x1,-y1,0.0f); glVertex3f(x2,-y2,0.0f); glEnd(); xo = x2; yo = y2; } if (md==1 && mm==1 && ms==1 ) { glColor3f(1.0f,1.0f,1.0f); glBegin(GL_LINES); glVertex3f(x1,-y1,0.0f); glVertex3f(xo,-yo,0.0f); glEnd(); glColor3f(r,g,b); glBegin(GL_LINES); glVertex3f(x1,-y1,0.0f); glVertex3f(x2,-y2,0.0f); glEnd(); xo = x2 ; yo = y2 ; } if (md==1 && mm==1 && ms==2 ) { glColor3f(1.0f,1.0f,1.0f); glBegin(GL_LINE_LOOP); glVertex3f(x1,-y1,0.0f); glVertex3f(x1,-yo,0.0f); glVertex3f(xo,-yo,0.0f); glVertex3f(xo,-y1,0.0f); glEnd(); glColor3f(r,g,b); glBegin(GL_LINE_LOOP); glVertex3f(x1,-y1,0.0f); glVertex3f(x1,-y2,0.0f); glVertex3f(x2,-y2,0.0f); glVertex3f(x2,-y1,0.0f); glEnd(); xo = x2 ; yo = y2 ; } if (md==1 && mm==1 && ms==3 ) { glColor3f(r,g,b); glBegin(GL_LINES); glVertex3f(x1,-y1,0.0f); glVertex3f(x2,-y2,0.0f); glEnd(); x1 = x2 ; y1 = y2 ; } if (md==1 && mm==1 && ms==4 ) { glClearColor(1.0f, 1.0f, 1.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); } } //--------------------------------------------------------------------------- void __fastcall TForm1::OpenGLAPPanel1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { md = 1 ; x1 = X ; y1 = Y ; xo = x1 ; yo = y1 ; } //--------------------------------------------------------------------------- void __fastcall TForm1::OpenGLAPPanel1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { mm = 1 ; x2 = X ; y2 = Y ; } //--------------------------------------------------------------------------- void __fastcall TForm1::OpenGLAPPanel1MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { md = 0 ; mm = 0 ; ms = 0 ; x1 = X ; y1 = Y ; } //--------------------------------------------------------------------------- void __fastcall TForm1::Line1Click(TObject *Sender) { md = 0 ; mm = 0 ; ms = 1 ; } //--------------------------------------------------------------------------- void __fastcall TForm1::Quad1Click(TObject *Sender) { md = 0 ; mm = 0 ; ms = 2 ; } //--------------------------------------------------------------------------- void __fastcall TForm1::point1Click(TObject *Sender) { md = 0 ; mm = 0 ; ms = 3 ; } //--------------------------------------------------------------------------- void __fastcall TForm1::clear1Click(TObject *Sender) { md = 0 ; mm = 0 ; ms = 4 ; } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) { Form1->DoubleBuffered=true; } [/code] |
ikk
尊榮會員 發表:4 回覆:413 積分:768 註冊:2003-06-30 發送簡訊給我 |
|
shanesss
一般會員 發表:14 回覆:18 積分:6 註冊:2008-08-19 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |