Toon posts:

[delphi] destroy rectangle

Pagina: 1
Acties:

Verwijderd

Topicstarter
hallo

ik ben bezig met de draw opties van delphi.
op zich kan ik een rechthoek wel maken alleen hoe haal ik er eenhem weg?

Ik wil alleen de laatst gemaakte weghalen, dus al het andere getekent moet blijven.

Ik probeerde het eerst met canvas.destroy maar dat vondt delphi niet leuk(programma chrashde en mn comp ook)

  • Monga
  • Registratie: Mei 2002
  • Laatst online: 14:23
Euh... gaan free-en als je iets anders op een canvas wilt zien? Lijkt me niet echt een optie.

Enige manier is om alles wat er achter de rectangle zat opnieuw te tekenen. Op de een of andere manier zal je dus moeten onthouden wat er allemaal al op was getekend.

Tip: override de paint-methode van je component.

Verwijderd

dmv van canvas.destroy 'free' je de gehele canvas, dit werkt dus niet!

Maak voor elke 'tekening' dynamisch een nieuwe aan, b.v.:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
Grafiek := TImage.Create(self);
with Grafiek do
begin
  Parent := MyParent;
  Top := MyTop;
  Left := MyLeft;
  Width := MyWidth;
  Height := MyHeight;
  Repaint;
  Canvas.Pen.Color := clBlack;
  Canvas.Brush.Color := clRed;
  Canvas.Rectangle(MyWidth,MySchaal,0,0);
end;

Deze kun je dan weer stuk voor stuk destroyen, b.v.
code:
1
FreeAndNil(Grafiek);

Aan je taak om het geheel wat te verfijnen. Ik hoop dat ik je op weg geholpen heb. Suc6!

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 13:23

Tomatoman

Fulltime prutser

Je tekent gewoon precies dezelfde rechthoek als daarvoor (dus over de vorige heen), maar dan met Canvas.Pen.Mode = pmXor). Mocht je de Rechthoek hebben opgevuld, dan heb je pech en moet je de achtergrond op een andere manier herstellen.

Lees ook eens de tekst bij Canvas.DrawFocusRect() in de Delphi Help. Misschien is dit precies wat je zoekt.

Een goede grap mag vrienden kosten.


  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-07 21:46

Confusion

Fallen from grace

Niet vergeten om een repaint te geven na het weghalen, als die niet per ongeluk ergens anders vandaan komt. Dat heeft mij nog weleens een uurtje zoeken gekost, omdat ik de pech had dat er niet toevallig al ergens een repaint vandaan kwam, zoals vaak toch wel het geval is |:(

Wie trösten wir uns, die Mörder aller Mörder?


  • Monga
  • Registratie: Mei 2002
  • Laatst online: 14:23
Op maandag 22 juli 2002 22:25 schreef Fused het volgende:
Niet vergeten om een repaint te geven na het weghalen, als die niet per ongeluk ergens anders vandaan komt. Dat heeft mij nog weleens een uurtje zoeken gekost, omdat ik de pech had dat er niet toevallig al ergens een repaint vandaan kwam, zoals vaak toch wel het geval is |:(
Om performance redenen zou ik zelfs een invalidate gebruiken ;)

Verwijderd

Op maandag 22 juli 2002 22:25 schreef Fused het volgende:
Niet vergeten om een repaint te geven na het weghalen, als die niet per ongeluk ergens anders vandaan komt. Dat heeft mij nog weleens een uurtje zoeken gekost, omdat ik de pech had dat er niet toevallig al ergens een repaint vandaan kwam, zoals vaak toch wel het geval is |:(
Zie mijn bovenstaande post. LOL :9
Pagina: 1