Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - problem mit canvas
ololo - Do 24.01.08 13:13
Titel: problem mit canvas
folgender code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| begin Form1.Canvas.Pen.Color := clFuchsia; Form1.Canvas.Brush.Color := clFuchsia; Form1.Canvas.Rectangle(0,0,Form1.Width,Form1.Height); Form1.Canvas.Brush.Color := farbe; Form1.Canvas.Pen.Width := 1; Form1.Canvas.Pen.Color := clBlack; Form1.Canvas.roundrect (0, 0, 401, 457, 33, 33); end; |
das hab ich in ner eigenen procedure stehen, wo
farbe als TColor übermittelt wird...
ich versuche damit zu bezwecken, dass das bisherige canvas auf der form komplett "übermalt" wird, mit transparent, weil ich clFuchsia als transparente farbe auf der form hab...
nur leider ignoriert er das "leere" zeichnen einfach
hoffe auf hilfe
greetz
Kroko - Do 24.01.08 13:19
Wo rufst Du denn die Prozedure auf, doch nicht etwa in OnFormCreate? wenn ja verlagere mal den Aufruf nach OnFormPaint :!:
Sinspin - Do 24.01.08 14:07
Rectangle ist nicht der Befehl der Wahl! Damit zeichnest du nur einen Rahmen.
Das was du brauchst ist FillRect!
Die Hilfe ist dein Freund :wink: ... da hättest du das auch gefunden.
Kroko - Do 24.01.08 14:15
Sinspin hat folgendes geschrieben: |
Rectangle ist nicht der Befehl der Wahl! Damit zeichnest du nur einen Rahmen.
Das was du brauchst ist FillRect!
Die Hilfe ist dein Freund :wink: ... da hättest du das auch gefunden. |
Du
irrst, mit Rectangle wird ein gefülltes Rechteck gezeichnet, wenn Brush.Color gesetzt und Brush.Style<>bsClear ist, probiere es aus!
ololo - Do 24.01.08 18:53
hi
das es im oncreate nich funzt, weiß ich auch :D
ich benutz die procedure im onpaint und noch woanders wärhend das prog läuft...
mein prog hat unten n menü, und oben was zum anzeigen...
wenn mein prog den fokus verliert, soll halt nurnoch das menü dasein, und der rest oben ausgeblendet werden:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33:
| procedure zeichnen(farbe : TColor); begin if not klein then begin Form1.Panel2.Color := farbe; Form1.ShellListView1.Color := farbe;
begin Form1.Canvas.Pen.Color := clFuchsia; Form1.Canvas.Brush.Color := clFuchsia; Form1.Canvas.Rectangle(0,0,Form1.Width,Form1.Height); Form1.Canvas.Brush.Color := farbe; Form1.Canvas.Pen.Width := 1; Form1.Canvas.Pen.Color := clBlack; Form1.Canvas.roundrect (0, 0, 401, 457, 33, 33); end; end;
if klein then begin Form1.Panel2.Color := farbe; Form1.ShellListView1.Color := farbe;
begin Form1.Canvas.Brush.Color := farbe; Form1.Canvas.roundrect (0, 376, 401, 457, 33, 33); end; end; end; |
nur is halt das problem, das er beim kleinamchen das canvas von "großen" einfach da lässt, und nich wegmacht...
und das sieht nich richtig aus, wenn dann oben nch n kasten is...^^
das ganze soll ja eig nur nen shape ersetzten, weil ich bei dem ja leider nich die größe der rundung angeben kann, die is ja nach der große des shapes festgelegt...
greetz
Kroko - Do 24.01.08 19:52
(a)
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| if Klein then begin end else begin end; |
(b) Form.Canvas übermalt keine Komponenten, die musst du mit Visible ein-/ausblenden
zBsp.
Panel1.Visible := klein;
ololo - Do 24.01.08 20:57
die komponenten blende ich in nem anderen teil aus, wenns klein wird, bleibt halt nur noch der rahmen vom canvas über, hab ma n pic im anhang...
wie man an den rotmarkierten stellen sieht, malt er das canvas vom kleinmachen auch... der andere teil wird überlagert, aber der obere rahmen, der quasi wie n kopfstehendes u aussieht, der soll halt noch weg...
edit:
in der mitte is n panel, gut getroffen kroko :D
ololo - Fr 25.01.08 20:24
habs jetzt anders (auch wenns unschön is^^) gelöst:
10 shapes:
4kreise für die eckenrundungsgrößen meiner wahl
2rechtecke um die fläche zu füllen ohne rand
4shapes mit der breite/höhe 1 für rand...
is zwar nich schön und ne menge code die imma auf die richtige größe zu bringen
aba was solls, es erfüllt seinen zweck...^^
greetz
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!