Avatar billede prodoc Nybegynder
12. december 2002 - 20:56 Der er 10 kommentarer og
1 løsning

"Malebøtte" funktion i Canvas image....

Hej Allesammen,
Jeg er i øjeblikket ved at lave maleprogram hvori jeg bruger Canvas til at lave billeder med (streger) og så har jeg længe ville have en "malebøtte" funktion, den skal virke på følgende måde...:
*Jeg laver via musen en rund (næsten) cirkel (canvas.pen = clBlack)
*Så trykker jeg indenfor cirkelen så bliver det hvide (eller hvad farve det nu er til den) til clRed (el lign)

Er det ikke muligt at den selv finder ud af at den kun ændrer farven til den når til en anden farve???

Ved ikke helt om I forstår spørgsmålet men hvis I tror I har løsningen så bare spørg nærmere, for det er rimelig vigtigt at jeg får løst det her problem..!!!!

M.v.h. ProDoc
Avatar billede prodoc Nybegynder
12. december 2002 - 21:10 #1
Har lavet et eksempel som ligger på:
http://www.slyngelstuen.dk/temp/index.htm

/ProDoc
Avatar billede kayb Nybegynder
14. december 2002 - 18:55 #2
Jo du skal bare lave en:
FloodFill(X, Y: Integer; Color: TColor; FillStyle: TFillStyle);
indenfor det område du vil fylde.
Avatar billede dl Nybegynder
14. december 2002 - 23:07 #3
lytter lige med.
prodoc >> sød animation. hehe

//dl
Avatar billede prodoc Nybegynder
15. december 2002 - 00:25 #4
dl> Jo tak for det.. :)
Skal lige prøve eksemplet men det kan jeg først i overmorgen så det tager lige lidt tid...

Kayb> Hvis jeg vil have det sådan at man skal trykke på en button for at den går over til "malebøtte funktion"?
Min male "funktion" ser sådan her ud:
Image1.Canvas.LineTo(Mouse.CursorPos.X-image1.left-form1.left-3,Mouse.CursorPos.Y-image1.top-form1.top-42)

/prodoc
Avatar billede kayb Nybegynder
15. december 2002 - 09:57 #5
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Buttons;

type
  TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    ColorBox1: TColorBox;
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure ColorBox1Change(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Drawing,Fyld : Boolean;

implementation

{$R *.dfm}

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
if Button=mbLeft then
begin
  if Fyld=True then
  begin
  Canvas.Brush.Style:=bsSolid;
  Canvas.Brush.Color:=ColorBox1.Selected;
  Canvas.FloodFill(X,Y,clBlack,fsBorder);
  Exit;
  end;
  Drawing:=True;
  X:=Mouse.CursorPos.X;
  Y:=Mouse.CursorPos.Y;
end
else Drawing:=False;

end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
if Drawing=True then
begin
  Canvas.LineTo(X,Y);
End;
end;

procedure TForm1.ColorBox1Change(Sender: TObject);
begin
Canvas.Pen.Color:=ColorBox1.Selected; 
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
if Fyld=True then Fyld:=False else Fyld:=True;
end;

end.

Her er et hurtigt eksempel.Håber ikke det er vildt uoverskueligt.
Avatar billede prodoc Nybegynder
15. december 2002 - 16:18 #6
Det er fint..  :)
Men det eneste jeg har brug for er:
          Image1.Canvas.Brush.Style:=bsSolid;
          Image1.Canvas.Brush.Color:=Clred;
          Image1.Canvas.FloodFill(X,Y,clBlack,fsBorder);
Men hvis jeg vil have den til kun at udfylde indenfor virkelen også selvom rammen ikke består af ClBlack (også alle andre farver)
/ProDoc
Avatar billede hermandsen Juniormester
22. januar 2003 - 20:55 #7
Lukketid?
Avatar billede prodoc Nybegynder
23. januar 2003 - 08:14 #8
Jo men har du ik en løsning på mit sidste spørgsmål...?
For i canvas når man bruger FloodFill så udfylder den kun indtil/hvis den farve som er angivet.... er det ikke muligt at sige at den skal farve til bare en ny farve.... altså fx clBlack som er skrevet herover?

/ProDoc
Avatar billede hermandsen Juniormester
23. januar 2003 - 09:52 #9
Jeg er ikke helt med... Vil du have et dynamisk billede hvor farverne skifter, når du skifter farverne på din farve palette?
Avatar billede prodoc Nybegynder
01. februar 2003 - 13:34 #10
Den kode jeg har nu fylder kun ud til den sidst lavede (farvede) streg jeg vil have den til at gøre sådan at den kun farver ud til enhver streg (anden farve) og ikke kun den sidst lavet streg...

/ProDoc
Avatar billede prodoc Nybegynder
25. januar 2004 - 22:33 #11
Lukker!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester