AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi [TPaintBox] - "Hintergrundfarbe" für Pen.Style := psDot
Thema durchsuchen
Ansicht
Themen-Optionen

[TPaintBox] - "Hintergrundfarbe" für Pen.Style := psDot

Ein Thema von xZise · begonnen am 6. Jan 2007 · letzter Beitrag vom 8. Jan 2007
Antwort Antwort
Seite 2 von 2     12   
Muetze1
(Gast)

n/a Beiträge
 
#11

Re: [TPaintBox] - "Hintergrundfarbe" für Pen.Style

  Alt 7. Jan 2007, 20:51
Zitat von xZise:
Zitat von Muetze1:
1. wenn du das einmal in die Paintbox gezeichnet hast, dann müsstest du bei Änderung der Position der transparenten Bereiche die alten gemalten Pixel weg bekommen. Transparent heisst aber nun mal nicht, dass er dort was "transparentes" hinmalt an der Stelle sondern er das malen dort auslässt.
Und was heißt das?
Das heisst, du musst den Canvas der leer bekommen. Bei transparenten Teilen bedeutet dies, dass der Parent neu gezeichnet werden muss an der Stelle, wo die PaintBox liegt. Dank der VCL würde somit ein TPaintBox.Update helfen.

Zitat von xZise:
Zitat von Muetze1:
2. Wenn du nur eine Farbe in dem Bitmap Transparent haben willst, dann setz die entsprechende Eigenschaft des Bitmaps (wie ich oben schon geschrieben hatte). Delphi-Referenz durchsuchenTBitmap.TransparentMode, Delphi-Referenz durchsuchenTBitmap.TransparentColor, Delphi-Referenz durchsuchenTBitmap.Transparent.
Und wie komme ich an das Bitmap eines PaintBox?
Achtung: Ich rede nicht vom Quellbitmap! Ich rede vom "eingefügten" Bitmap!
(Aber selbst wenn, würde es nicht viel bringen, siehe unten)
Ich rede von deinem "Quellbitmap". Ein TPaintBox hat nur einen Canvas, keine Bitmap oder sonstiges. Genau aus diesem Grund muss beim OnPaint immer der Inhalt der PaintBox neu gezeichnet werden. Wenn du dies nun nicht auf deinem QuellBitmap haben willst, dann füge ein temporäres TBitmap ein, male da dein QuellBitmap rauf, dann deine Linien, dann die Transparenz setzen und diese dann auf den Canvas der PaintBox bringen.

Und wegen dem restlichen Text von dir: Ich kapier nicht wirklich was du willst. So wie ich das verstanden habe, willst du einfach nur eine Strichellinie auf diesem vorher auf die Paintbox gemalte Bitmap hinterlassen, mit der Bedingung, dass die Zwischenräume bei psDashDot nicht mit der Brush.Color gefüllt wird, sondern dort soll das Bitmap durchscheinen.

Wenn dem wirklich so ist, dann weiss ich nicht, was dein Problem ist. Ich habe genau das mal schnell zusammengeklickt und es klappt einwandfrei wenn Brush.Style auf bsClear gesetzt wird. Schau dir den Anhang an, wenn das nicht das ist, was du suchst, dann beschreibe mir das Problem bitte nochmal genau.
Miniaturansicht angehängter Grafiken
psdashdot_on_bitmap_108.png  
Angehängte Dateien
Dateityp: zip psdashdot_on_bitmap_202.zip (44,7 KB, 14x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#12

Re: [TPaintBox] - "Hintergrundfarbe" für Pen.Style

  Alt 8. Jan 2007, 11:04
Nagut. Eigentlich wolllte ich mir weitere Bitmaps sparen, aber es lässt sich wohl nicht verhindern

Und du hast alles richtig verstanden, und ich denke so wäre es auch umzusetzten.

Aber eine Frage: Ich kann dennoch BitBlt benutzen, oder? Er hat ja alles gezeichnet...

[edit]Okay!
Es funktioniert, wenn auch umständlich
Delphi-Quellcode:
bBuffer := TBitmap.Create;
try
  bBuffer.Width := pbMap.Width;
  bBuffer.Height := pbMap.Height;
  BitBlt(bBuffer.Canvas.Handle, xDis, yDis, bMap.Width, bMap.Width, bMap.Canvas.Handle, 0, 0, SRCCOPY);
  with bBuffer.Canvas do
  begin
    Brush.Style := bsClear;
    Pen.Style := psDot;
    Pen.Color := $000000FF;
    MoveTo((selectRect.X * 32) + xDis, (selectRect.Y * 32) + yDis);
    LineTo(((selectRect.X + 1) * 32) + xDis, (selectRect.Y * 32) + yDis);
    LineTo(((selectRect.X + 1) * 32) + xDis, ((selectRect.Y + 1) * 32) + yDis);
    LineTo((selectRect.X * 32) + xDis, ((selectRect.Y + 1) * 32) + yDis);
    LineTo((selectRect.X * 32) + xDis, (selectRect.Y * 32) + yDis);
  end;
  BitBlt(pbMap.Canvas.Handle, 0, 0, bBuffer.Width, bBuffer.Height, bBuffer.Canvas.Handle, 0, 0, SRCCOPY)
  finally
    FreeAndNil(bBuffer);
  end;
[/edit]
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#13

Re: [TPaintBox] - "Hintergrundfarbe" für Pen.Style

  Alt 8. Jan 2007, 12:55
Und das läuft nicht?

Delphi-Quellcode:
  BitBlt(pbMap.Canvas.Handle, xDis, yDis, bMap.Width, bMap.Width, bMap.Canvas.Handle, 0, 0, SRCCOPY);
  with pbMap.Canvas do
  begin
    Brush.Style := bsClear;
    Pen.Style := psDot;
    Pen.Color := $000000FF;
    MoveTo((selectRect.X * 32) + xDis, (selectRect.Y * 32) + yDis);
    LineTo(((selectRect.X + 1) * 32) + xDis, (selectRect.Y * 32) + yDis);
    LineTo(((selectRect.X + 1) * 32) + xDis, ((selectRect.Y + 1) * 32) + yDis);
    LineTo((selectRect.X * 32) + xDis, ((selectRect.Y + 1) * 32) + yDis);
    LineTo((selectRect.X * 32) + xDis, (selectRect.Y * 32) + yDis);
  end;
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#14

Re: [TPaintBox] - "Hintergrundfarbe" für Pen.Style

  Alt 8. Jan 2007, 13:55
Ähm nein?
Siehe:

Zitat von xZise:
Naja Ich will dich nicht ärgern, aber ich habe die Brush-Farbe und den Brush-Style "abnormalisiert" ohne Änderung...
Ich bezog mich auf die Paintbox. Hatte vergessen zu sagen, dass ich das Quellbitmap nicht verändern will.
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#15

Re: [TPaintBox] - "Hintergrundfarbe" für Pen.Style

  Alt 8. Jan 2007, 15:08
Zitat von xZise:
Ähm nein?
Siehe:

Zitat von xZise:
Naja Ich will dich nicht ärgern, aber ich habe die Brush-Farbe und den Brush-Style "abnormalisiert" ohne Änderung...
Ich bezog mich auf die Paintbox. Hatte vergessen zu sagen, dass ich das Quellbitmap nicht verändern will.
Was mich sehr wundert, denn der Code von mir von eben funktioniert bei mir genauso. Es muss daher noch an irgendwas anderes bei dir liegen.

Und die Quellbitmap verändere ich nicht. Ich zeichne deine Quellbitmap auf die PaintBox und dann male ich in der PaintBox die Linien und das wiederrum funktioniert mit dem von mir geposteten Code und es entspricht hierbei sogar dem Code aus meinem zuvor geposteten Beispielprogramm, wo dies auch funktioniert.

Somit: Machst du noch irgendwas anderes im OnPaint der PaintBox?
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#16

Re: [TPaintBox] - "Hintergrundfarbe" für Pen.Style

  Alt 8. Jan 2007, 15:13
Nein.
Das war der ganze Code...
Übrigens habe ich gesehen, dass du nichts auf den QuellBitMap änderst. Das wundert mich sehr, dass es funktioniert...

Ich werde mir dann wohl doch deinen Code runterladen (ich dachte eigentlich, dass du es so wie ich programmiert hast...)

[edit]Ha! Den Täter habe ich entlarvt
Ich habe (der Unterschied!) den Style im Create der Form gesetzt
Und so wie es aussieht scheint da BitBlt oder irgendetwas ähnliches dazwischen zufunken.

Ich hätte mir deinen Code vorher angucken sollen...[/edit]
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#17

Re: [TPaintBox] - "Hintergrundfarbe" für Pen.Style

  Alt 8. Jan 2007, 15:21
[edit]wow... Ein Doppelpost ... sry, hatte ich übersehen...
(Wir war eh so, als hätte ich schon was geschrieben....)[/edit]
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#18

Re: [TPaintBox] - "Hintergrundfarbe" für Pen.Style

  Alt 8. Jan 2007, 15:49
*puh* Ich dachte schon wir bekommen das gar nicht mehr und bestehen beide auf unseren Codes das sie gehen bzw. nicht.

Gut das das geklärt ist...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz