求救:如何用鼠标曲线? 请问各位高手!如何用鼠标在画布上画曲线, 并且鼠标的痕迹就是曲线的形状。 拜托了! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 var Down: Boolean; prePt: TPoint;procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin Down := True; Canvas.MoveTo(X, Y);end;procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin Down := False;end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);begin if Down then begin Canvas.LineTo(X, Y); prePt := Point(X, Y); end;end; //--------------------------------------------------------------------------//// Brush.cpp //// Project: BrushForm //// Copyright (c) 1997 by Jeff Cottingham ////--------------------------------------------------------------------------////---------------------------------------------------------------------------#include <vcl\vcl.h>#pragma hdrstop#include "Brush.h"//---------------------------------------------------------------------------#pragma package(smart_init)#pragma resource "*.dfm"TForm1 *Form1;//---------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner){}//---------------------------------------------------------------------------void __fastcall TForm1::RadioGroup1Click(TObject *Sender){ switch(RadioGroup1->ItemIndex){ case 8 : Check = true; break; case 7 : myBrushStyle = bsVertical; break; case 6 : myBrushStyle = bsFDiagonal; break; case 5 : myBrushStyle = bsBDiagonal; break; case 4 : myBrushStyle = bsHorizontal; break; case 3 : myBrushStyle = bsDiagCross; break; case 2 : myBrushStyle = bsClear; break; case 1 : myBrushStyle = bsCross; break; case 0 : myBrushStyle = bsSolid; break; };}//---------------------------------------------------------------------------void __fastcall TForm1::RadioGroup2Click(TObject *Sender){ switch(RadioGroup2->ItemIndex){ case 15 : myMode = pmNotXor; break; case 14 : myMode = pmXor; break; case 13 : myMode = pmNotMask; break; case 12 : myMode = pmMask; break; case 11 : myMode = pmNotMerge; break; case 10 : myMode = pmMerge; break; case 9 : myMode = pmMaskNotPen; break; case 8 : myMode = pmMergeNotPen; break; case 7 : myMode = pmMaskPenNot; break; case 6 : myMode = pmMergePenNot; break; case 5 : myMode = pmNotCopy; break; case 4 : myMode = pmCopy; break; case 3 : myMode = pmNot; break; case 2 : myMode = pmNop; break; case 1 : myMode = pmWhite; break; case 0 : myMode = pmBlack; break; };}//---------------------------------------------------------------------------void __fastcall TForm1::Button1Click(TObject *Sender){ int y = 20; int x = 20; Image2->Canvas->Pen->Mode = myMode; Image2->Canvas->Pen->Width = Edit1->Text.ToInt(); for(int i = 0;i < 10 ;i++){ Image2->Canvas->MoveTo(0,y); Image2->Canvas->LineTo(Image2->Width,y); y += 20; }; for(int i = 0;i < 13;i++){ Image2->Canvas->MoveTo(x,0); Image2->Canvas->LineTo(x,Image2->Height); x += 20; };}//---------------------------------------------------------------------------void __fastcall TForm1::Button2Click(TObject *Sender){ if(Check){ Graphics::TBitmap *CustomBrush = new Graphics::TBitmap;; try { CustomBrush->LoadFromFile("Custom.bmp"); Image1->Canvas->Brush->Bitmap = CustomBrush; Image1->Canvas->FillRect(Rect(3,3,Image1->Width - 3, Image1->Height - 3)); } catch (...){ Image1->Canvas->Brush->Bitmap = NULL; delete CustomBrush; }; Image1->Canvas->Brush->Bitmap = NULL; delete CustomBrush; Check = false; } else { Image1->Canvas->Brush->Style = myBrushStyle; Image1->Canvas->FillRect(Rect(3,3,Image1->Width - 3,Image1->Height - 3)); };}//---------------------------------------------------------------------------void __fastcall TForm1::FormShow(TObject *Sender){ Image1->Canvas->Rectangle(0,0,Image1->Width,Image1->Height); Image2->Canvas->FillRect(Image2->Canvas->ClipRect); Image3->Canvas->FillRect(Image3->Canvas->ClipRect); Image4->Canvas->FillRect(Image4->Canvas->ClipRect); Image5->Canvas->FillRect(Image5->Canvas->ClipRect); Image6->Canvas->FillRect(Image6->Canvas->ClipRect); Image7->Canvas->FillRect(Image7->Canvas->ClipRect); Image8->Canvas->FillRect(Image8->Canvas->ClipRect);}//---------------------------------------------------------------------------void __fastcall TForm1::Edit2Change(TObject *Sender){ myStyle = oldStyle; Image3->Canvas->Font->Style = myStyle; if(CheckBox1->Checked){ myStyle << fsBold; Image3->Canvas->Font->Style = myStyle; }; if(CheckBox2->Checked) { myStyle << fsItalic; Image3->Canvas->Font->Style = myStyle; }; if(CheckBox3->Checked) { myStyle << fsUnderline; Image3->Canvas->Font->Style = myStyle; }; if(CheckBox4->Checked) { myStyle << fsStrikeOut; Image3->Canvas->Font->Style = myStyle; }; if(CheckBox5->Checked) Image3->Canvas->Font->Height = TFontHeight - 10; else { Image3->Canvas->Font->Height = TFontHeight; Image3->Canvas->Font->Size = 20; }; Image3->Canvas->FillRect(Image3->ClientRect); Image3->Canvas->TextOut(10,20,Edit2->Text); Image4->Canvas->FillRect(Image4->ClientRect); Image4->Canvas->TextOut(10,20,Edit2->Text);}//---------------------------------------------------------------------------void __fastcall TForm1::CheckBox1Click(TObject *Sender){ Edit2->SetFocus(); Edit2->SelStart = Edit2->SelLength;}//---------------------------------------------------------------------------void __fastcall TForm1::Image5MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y){ Point1.x = X; Point1.y = Y; Point2.x = X; Point2.y = Y; Rendering = true;}//---------------------------------------------------------------------------void __fastcall TForm1::Image5MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y){ Rendering = false; Image5->Canvas->Pen->Style = psSolid; Image5->Canvas->Pen->Mode = pmCopy; if(CanRender && !Rendering)DrawShape(Point1.x,Point1.y,X,Y); if(SpeedButton5->Down){ Image5->Canvas->Brush->Color = clRed; Image5->Canvas->FloodFill(X,Y,clBlack,fsBorder); Image5->Canvas->Brush->Color = clWhite; };}//---------------------------------------------------------------------------void __fastcall TForm1::DrawShape(int w,int x,int y,int z){ switch(dsCurrentShape){ case dsEllipse : Image5->Canvas->Ellipse(w,x,y,z); break; case dsRectangle : Image5->Canvas->Rectangle(w,x,y,z); break; case dsLine : { Image5->Canvas->MoveTo(w,x); Image5->Canvas->LineTo(y,z); break; }; };}//---------------------------------------------------------------------------void __fastcall TForm1::Render(int x,int y){ if(CanRender && Rendering){ Image5->Canvas->Brush->Style = bsClear; Image5->Canvas->Pen->Mode = pmNotXor; Image5->Canvas->Pen->Style = psDot; DrawShape(Point1.x,Point1.y,Point2.x,Point2.y); Point2.x = x; Point2.y = y; DrawShape(Point1.x,Point1.y,Point2.x,Point2.y); } else { Rendering = false; };}//--------------------------------------------------------------------------- void __fastcall TForm1::Image5MouseMove(TObject *Sender, TShiftState Shift, int X, int Y){ if(CanRender) Render(X,Y);}//---------------------------------------------------------------------------void __fastcall TForm1::SpeedButton2Click(TObject *Sender){ CanRender = true; dsCurrentShape = dsEllipse;}//---------------------------------------------------------------------------void __fastcall TForm1::SpeedButton4Click(TObject *Sender){ CanRender = false; Rendering = false; Image5->Canvas->Brush->Style = bsSolid; Image5->Canvas->FillRect(Image5->ClientRect);}//---------------------------------------------------------------------------void __fastcall TForm1::SpeedButton1Click(TObject *Sender){ CanRender = true; dsCurrentShape = dsLine;}//---------------------------------------------------------------------------void __fastcall TForm1::SpeedButton3Click(TObject *Sender){ if(dynamic_cast<TSpeedButton*>(Sender)->Down) CanRender = true; if(dynamic_cast<TSpeedButton*>(Sender)->Name == "SpeedButton1") dsCurrentShape = dsLine; else if(dynamic_cast<TSpeedButton*>(Sender)->Name == "SpeedButton2") dsCurrentShape = dsEllipse; else if(dynamic_cast<TSpeedButton*>(Sender)->Name == "SpeedButton3") dsCurrentShape = dsRectangle;}//---------------------------------------------------------------------------void __fastcall TForm1::RadioGroup3Click(TObject *Sender){ switch(RadioGroup3->ItemIndex){ case 14 : TCopyMode = cmWhiteness; break; case 13 : TCopyMode = cmSrcPaint; break; case 12 : TCopyMode = cmSrcInvert; break; case 11 : TCopyMode = cmSrcErase; break; case 10 : TCopyMode = cmSrcCopy; break; case 9 : TCopyMode = cmSrcAnd; break; case 8 : TCopyMode = cmPatPaint; break; case 7 : TCopyMode = cmPatInvert; break; case 6 : TCopyMode = cmPatCopy; break; case 5 : TCopyMode = cmNotSrcErase; break; case 4 : TCopyMode = cmNotSrcCopy; break; case 3 : TCopyMode = cmMergePaint; break; case 2 : TCopyMode = cmMergeCopy; break; case 1 : TCopyMode = cmDstInvert; break; case 0 : TCopyMode = cmBlackness; break; };}//---------------------------------------------------------------------------void __fastcall TForm1::BitBtn1Click(TObject *Sender){ Image6->Canvas->Brush->Color = clWhite; Image6->Canvas->Brush->Style = bsSolid; Image6->Canvas->FillRect(Image6->Canvas->ClipRect); Image6->Canvas->Brush->Color = clGreen; Image6->Canvas->Rectangle(25,25,140,140);}//---------------------------------------------------------------------------void __fastcall TForm1::BitBtn2Click(TObject *Sender){ Image7->Canvas->Brush->Color = clWhite; Image7->Canvas->Brush->Style = bsSolid; Image7->Canvas->FillRect(Image7->Canvas->ClipRect); Image7->Canvas->Brush->Color = clBlue; Image7->Canvas->Rectangle(60,60,190,190);}//---------------------------------------------------------------------------void __fastcall TForm1::BitBtn3Click(TObject *Sender){ Image7->Canvas->CopyMode = TCopyMode; Image7->Canvas->CopyRect(Image7->Canvas->ClipRect,Image6->Canvas, Image6->Canvas->ClipRect);}//---------------------------------------------------------------------------void __fastcall TForm1::FormCreate(TObject *Sender){ Image1->Canvas->Pen->Width = 3; Image1->Canvas->Pen->Color = clRed; Image2->Canvas->Brush->Style = bsSolid; Image2->Canvas->Brush->Color = clBlue; Image2->Canvas->Pen->Color = clRed; Image3->Canvas->Brush->Color = clBtnFace; Image3->Canvas->Font->Size = 20; TFontHeight = Image3->Canvas->Font->Height; oldStyle = Image3->Canvas->Font->Style; Image4->Canvas->Brush->Color = clBtnFace; Image4->Canvas->Font->Size = 20;}//---------------------------------------------------------------------------void __fastcall TForm1::Button3Click(TObject *Sender){ HRGN MyRgn; //Image8->Invalidate(); MyRgn = ::CreateRectRgn(100,100,200,200); ::SelectClipRgn(Image8->Canvas->Handle,MyRgn); Ellipse(Image8->Canvas->Handle,90,90,210,210); Image8->Invalidate(); ::SelectClipRgn(Image8->Canvas->Handle,NULL); ::DeleteObject(MyRgn); MyRgn = CreateRectRgn(200,200,300,300); ::SelectClipRgn(Image8->Canvas->Handle,MyRgn); ::Ellipse(Image8->Canvas->Handle,190,190,310,310); Image8->Invalidate(); ::SelectClipRgn(Image8->Canvas->Handle,NULL); ::DeleteObject(MyRgn); MyRgn = ::CreateRectRgn(300,300,400,400); ::SelectClipRgn(Image8->Canvas->Handle,MyRgn); ::Ellipse(Image8->Canvas->Handle,290,290,410,410); Image8->Invalidate(); ::SelectClipRgn(Image8->Canvas->Handle,0); ::DeleteObject(MyRgn);}//---------------------------------------------------------------------------void __fastcall TForm1::Button4Click(TObject *Sender){ Image8->Canvas->FillRect(Image8->Canvas->ClipRect) ;}//--------------------------------------------------------------------------- BCB写的画图程序,稍加改造就可变成Delphi的啦!!!!!!!!! //完整的程序,按鼠标左键开始画,按鼠标右键停止画。unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;type TForm1 = class(TForm) procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); private { Private declarations } public { Public declarations } end;var Form1: TForm1; b_Draw:boolean; p_Old,p_New:TPoint;implementation{$R *.dfm}procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin if (not b_Draw) and (Button=mbleft)then begin b_Draw:=true; form1.Canvas.Pen.Mode:=pmNotXor; p_Old.X:=X; p_Old.Y:=y; p_New.X:=X; p_New.Y:=y; end;end;procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin if (b_Draw) and (Button=mbright) then b_Draw:=false;end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);begin if not b_Draw then exit; form1.Canvas.MoveTo(p_Old.X,p_Old.Y); form1.Canvas.LineTo(p_New.X,p_New.Y); p_Old.X:=p_New.X; p_Old.Y:=p_New.Y; p_New.X:=X; p_New.Y:=Y;end;end. Delphi如何用Ado连接Mysql 系统开发数据库经典问题!!! 关于二进制文件的读写 高手帮忙 欢迎大家下载我的软件,下载者有分. Richedit的一个字体变色的问题 继续散分 简单问题:动态创建定时事件 将一个文件拷贝到另一个地方,怎么办??? ADO连接DBF,为何出现这样的问题.......... 请问如何在word中指定位置输入文本内容? 如何让TEdit中只可输入Float型的数值 关于delphi6中错误提示:Circular unit reference to 'richedit'
Down: Boolean;
prePt: TPoint;procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Down := True;
Canvas.MoveTo(X, Y);
end;procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Down := False;
end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if Down then
begin
Canvas.LineTo(X, Y);
prePt := Point(X, Y);
end;
end;
// Brush.cpp //
// Project: BrushForm //
// Copyright (c) 1997 by Jeff Cottingham //
//--------------------------------------------------------------------------////---------------------------------------------------------------------------
#include <vcl\vcl.h>
#pragma hdrstop#include "Brush.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------void __fastcall TForm1::RadioGroup1Click(TObject *Sender)
{ switch(RadioGroup1->ItemIndex){
case 8 : Check = true;
break;
case 7 : myBrushStyle = bsVertical;
break;
case 6 : myBrushStyle = bsFDiagonal;
break;
case 5 : myBrushStyle = bsBDiagonal;
break;
case 4 : myBrushStyle = bsHorizontal;
break;
case 3 : myBrushStyle = bsDiagCross;
break;
case 2 : myBrushStyle = bsClear;
break;
case 1 : myBrushStyle = bsCross;
break;
case 0 : myBrushStyle = bsSolid;
break;
};
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RadioGroup2Click(TObject *Sender)
{
switch(RadioGroup2->ItemIndex){
case 15 : myMode = pmNotXor;
break;
case 14 : myMode = pmXor;
break;
case 13 : myMode = pmNotMask;
break;
case 12 : myMode = pmMask;
break;
case 11 : myMode = pmNotMerge;
break;
case 10 : myMode = pmMerge;
break;
case 9 : myMode = pmMaskNotPen;
break;
case 8 : myMode = pmMergeNotPen;
break;
case 7 : myMode = pmMaskPenNot;
break;
case 6 : myMode = pmMergePenNot;
break;
case 5 : myMode = pmNotCopy;
break;
case 4 : myMode = pmCopy;
break;
case 3 : myMode = pmNot;
break;
case 2 : myMode = pmNop;
break;
case 1 : myMode = pmWhite;
break;
case 0 : myMode = pmBlack;
break;
};
}
//---------------------------------------------------------------------------void __fastcall TForm1::Button1Click(TObject *Sender)
{
int y = 20;
int x = 20; Image2->Canvas->Pen->Mode = myMode;
Image2->Canvas->Pen->Width = Edit1->Text.ToInt(); for(int i = 0;i < 10 ;i++){
Image2->Canvas->MoveTo(0,y);
Image2->Canvas->LineTo(Image2->Width,y);
y += 20;
}; for(int i = 0;i < 13;i++){
Image2->Canvas->MoveTo(x,0);
Image2->Canvas->LineTo(x,Image2->Height);
x += 20;
};
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
if(Check){
Graphics::TBitmap *CustomBrush = new Graphics::TBitmap;;
try {
CustomBrush->LoadFromFile("Custom.bmp");
Image1->Canvas->Brush->Bitmap = CustomBrush;
Image1->Canvas->FillRect(Rect(3,3,Image1->Width - 3,
Image1->Height - 3));
}
catch (...){
Image1->Canvas->Brush->Bitmap = NULL;
delete CustomBrush;
};
Image1->Canvas->Brush->Bitmap = NULL;
delete CustomBrush;
Check = false;
}
else {
Image1->Canvas->Brush->Style = myBrushStyle;
Image1->Canvas->FillRect(Rect(3,3,Image1->Width - 3,Image1->Height - 3));
};
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormShow(TObject *Sender)
{
Image1->Canvas->Rectangle(0,0,Image1->Width,Image1->Height);
Image2->Canvas->FillRect(Image2->Canvas->ClipRect);
Image3->Canvas->FillRect(Image3->Canvas->ClipRect);
Image4->Canvas->FillRect(Image4->Canvas->ClipRect);
Image5->Canvas->FillRect(Image5->Canvas->ClipRect);
Image6->Canvas->FillRect(Image6->Canvas->ClipRect);
Image7->Canvas->FillRect(Image7->Canvas->ClipRect);
Image8->Canvas->FillRect(Image8->Canvas->ClipRect);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit2Change(TObject *Sender)
{
myStyle = oldStyle; Image3->Canvas->Font->Style = myStyle; if(CheckBox1->Checked){
myStyle << fsBold;
Image3->Canvas->Font->Style = myStyle;
};
if(CheckBox2->Checked) {
myStyle << fsItalic;
Image3->Canvas->Font->Style = myStyle;
};
if(CheckBox3->Checked) {
myStyle << fsUnderline;
Image3->Canvas->Font->Style = myStyle;
};
if(CheckBox4->Checked) {
myStyle << fsStrikeOut;
Image3->Canvas->Font->Style = myStyle;
};
if(CheckBox5->Checked)
Image3->Canvas->Font->Height = TFontHeight - 10;
else {
Image3->Canvas->Font->Height = TFontHeight;
Image3->Canvas->Font->Size = 20;
}; Image3->Canvas->FillRect(Image3->ClientRect);
Image3->Canvas->TextOut(10,20,Edit2->Text); Image4->Canvas->FillRect(Image4->ClientRect);
Image4->Canvas->TextOut(10,20,Edit2->Text);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CheckBox1Click(TObject *Sender)
{
Edit2->SetFocus();
Edit2->SelStart = Edit2->SelLength;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image5MouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
Point1.x = X;
Point1.y = Y;
Point2.x = X;
Point2.y = Y;
Rendering = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image5MouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
Rendering = false;
Image5->Canvas->Pen->Style = psSolid;
Image5->Canvas->Pen->Mode = pmCopy;
if(CanRender && !Rendering)DrawShape(Point1.x,Point1.y,X,Y);
if(SpeedButton5->Down){
Image5->Canvas->Brush->Color = clRed;
Image5->Canvas->FloodFill(X,Y,clBlack,fsBorder);
Image5->Canvas->Brush->Color = clWhite;
};
}
//---------------------------------------------------------------------------void __fastcall TForm1::DrawShape(int w,int x,int y,int z)
{
switch(dsCurrentShape){
case dsEllipse : Image5->Canvas->Ellipse(w,x,y,z);
break;
case dsRectangle : Image5->Canvas->Rectangle(w,x,y,z);
break;
case dsLine : {
Image5->Canvas->MoveTo(w,x);
Image5->Canvas->LineTo(y,z);
break;
};
};
}
//---------------------------------------------------------------------------void __fastcall TForm1::Render(int x,int y)
{
if(CanRender && Rendering){
Image5->Canvas->Brush->Style = bsClear;
Image5->Canvas->Pen->Mode = pmNotXor;
Image5->Canvas->Pen->Style = psDot;
DrawShape(Point1.x,Point1.y,Point2.x,Point2.y);
Point2.x = x;
Point2.y = y;
DrawShape(Point1.x,Point1.y,Point2.x,Point2.y);
}
else {
Rendering = false;
};
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image5MouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
if(CanRender) Render(X,Y);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton2Click(TObject *Sender)
{
CanRender = true;
dsCurrentShape = dsEllipse;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton4Click(TObject *Sender)
{
CanRender = false;
Rendering = false;
Image5->Canvas->Brush->Style = bsSolid;
Image5->Canvas->FillRect(Image5->ClientRect);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
CanRender = true;
dsCurrentShape = dsLine;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton3Click(TObject *Sender)
{
if(dynamic_cast<TSpeedButton*>(Sender)->Down) CanRender = true;
if(dynamic_cast<TSpeedButton*>(Sender)->Name == "SpeedButton1")
dsCurrentShape = dsLine;
else if(dynamic_cast<TSpeedButton*>(Sender)->Name == "SpeedButton2")
dsCurrentShape = dsEllipse;
else if(dynamic_cast<TSpeedButton*>(Sender)->Name == "SpeedButton3")
dsCurrentShape = dsRectangle;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::RadioGroup3Click(TObject *Sender)
{
switch(RadioGroup3->ItemIndex){
case 14 : TCopyMode = cmWhiteness;
break;
case 13 : TCopyMode = cmSrcPaint;
break;
case 12 : TCopyMode = cmSrcInvert;
break;
case 11 : TCopyMode = cmSrcErase;
break;
case 10 : TCopyMode = cmSrcCopy;
break;
case 9 : TCopyMode = cmSrcAnd;
break;
case 8 : TCopyMode = cmPatPaint;
break;
case 7 : TCopyMode = cmPatInvert;
break;
case 6 : TCopyMode = cmPatCopy;
break;
case 5 : TCopyMode = cmNotSrcErase;
break;
case 4 : TCopyMode = cmNotSrcCopy;
break;
case 3 : TCopyMode = cmMergePaint;
break;
case 2 : TCopyMode = cmMergeCopy;
break;
case 1 : TCopyMode = cmDstInvert;
break;
case 0 : TCopyMode = cmBlackness;
break;
};
}
//---------------------------------------------------------------------------void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
Image6->Canvas->Brush->Color = clWhite;
Image6->Canvas->Brush->Style = bsSolid;
Image6->Canvas->FillRect(Image6->Canvas->ClipRect);
Image6->Canvas->Brush->Color = clGreen;
Image6->Canvas->Rectangle(25,25,140,140);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
Image7->Canvas->Brush->Color = clWhite;
Image7->Canvas->Brush->Style = bsSolid;
Image7->Canvas->FillRect(Image7->Canvas->ClipRect);
Image7->Canvas->Brush->Color = clBlue;
Image7->Canvas->Rectangle(60,60,190,190);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn3Click(TObject *Sender)
{
Image7->Canvas->CopyMode = TCopyMode;
Image7->Canvas->CopyRect(Image7->Canvas->ClipRect,Image6->Canvas,
Image6->Canvas->ClipRect);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Image1->Canvas->Pen->Width = 3;
Image1->Canvas->Pen->Color = clRed; Image2->Canvas->Brush->Style = bsSolid;
Image2->Canvas->Brush->Color = clBlue;
Image2->Canvas->Pen->Color = clRed; Image3->Canvas->Brush->Color = clBtnFace;
Image3->Canvas->Font->Size = 20;
TFontHeight = Image3->Canvas->Font->Height;
oldStyle = Image3->Canvas->Font->Style; Image4->Canvas->Brush->Color = clBtnFace;
Image4->Canvas->Font->Size = 20;}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
HRGN MyRgn; //Image8->Invalidate();
MyRgn = ::CreateRectRgn(100,100,200,200);
::SelectClipRgn(Image8->Canvas->Handle,MyRgn);
Ellipse(Image8->Canvas->Handle,90,90,210,210);
Image8->Invalidate();
::SelectClipRgn(Image8->Canvas->Handle,NULL);
::DeleteObject(MyRgn); MyRgn = CreateRectRgn(200,200,300,300);
::SelectClipRgn(Image8->Canvas->Handle,MyRgn);
::Ellipse(Image8->Canvas->Handle,190,190,310,310);
Image8->Invalidate();
::SelectClipRgn(Image8->Canvas->Handle,NULL);
::DeleteObject(MyRgn); MyRgn = ::CreateRectRgn(300,300,400,400);
::SelectClipRgn(Image8->Canvas->Handle,MyRgn);
::Ellipse(Image8->Canvas->Handle,290,290,410,410);
Image8->Invalidate();
::SelectClipRgn(Image8->Canvas->Handle,0);
::DeleteObject(MyRgn);
}
//---------------------------------------------------------------------------void __fastcall TForm1::Button4Click(TObject *Sender)
{
Image8->Canvas->FillRect(Image8->Canvas->ClipRect) ;
}
//---------------------------------------------------------------------------
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;type
TForm1 = class(TForm)
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
b_Draw:boolean;
p_Old,p_New:TPoint;
implementation{$R *.dfm}procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if (not b_Draw) and (Button=mbleft)then
begin
b_Draw:=true;
form1.Canvas.Pen.Mode:=pmNotXor;
p_Old.X:=X;
p_Old.Y:=y;
p_New.X:=X;
p_New.Y:=y;
end;end;procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if (b_Draw) and (Button=mbright) then
b_Draw:=false;end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if not b_Draw then exit;
form1.Canvas.MoveTo(p_Old.X,p_Old.Y);
form1.Canvas.LineTo(p_New.X,p_New.Y);
p_Old.X:=p_New.X;
p_Old.Y:=p_New.Y;
p_New.X:=X;
p_New.Y:=Y;
end;end.