AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Ein Rechteck auf TBitmap.Canvas mit transparenter Farbe?
Thema durchsuchen
Ansicht
Themen-Optionen

Ein Rechteck auf TBitmap.Canvas mit transparenter Farbe?

Ein Thema von ak1 · begonnen am 18. Okt 2004 · letzter Beitrag vom 18. Okt 2004
Antwort Antwort
Seite 1 von 2  1 2      
ak1

Registriert seit: 12. Okt 2003
243 Beiträge
 
#1

Ein Rechteck auf TBitmap.Canvas mit transparenter Farbe?

  Alt 18. Okt 2004, 12:00
Hallo Leute,

ich habe auf einem TBitmap-Objekt mit Canvas etwas gezeichnet. Nun möchte ich anschließend mit
Bitmap.Canvas.FillRect(...); ein Rechteck in transparenter Farbe über das bereits gemalte zeichnen Wie kann ich das machen?
Ich bekomme keine transparente Farbe hin.
  Mit Zitat antworten Zitat
Benutzerbild von Ben1
Ben1

Registriert seit: 11. Okt 2004
Ort: Rostock
36 Beiträge
 
Delphi 6 Personal
 
#2

Re: Ein Rechteck auf TBitmap.Canvas mit transparenter Farbe?

  Alt 18. Okt 2004, 13:00
Unterstützt Canvas eigentlich einen Alphachannel ?
Ich glaube nicht.
Schau dir mal die Canvas-Eigenschaft CopyMode in der Hilfe an. Damit kannst du logische Operationen zwischen Bildinhalten erzeugen. OR sieht fast wie Transparenz aus. Ansonsten hast du immer noch die Möglichkeit dir dein Fillrect selbst zu schreiben indem du dann jeden Pixel des Ursprungbildes ausliest, mit der zusätzlichen Farbe verrechnest und ihn neu setzt. SO kannst du problemlos beliebige Transparenzeffekte erzeugen, wenn du nur die passende Formel dafür hast.
Ben
---------------------------------------
Spielanleitung !? Wieso ? Wozu ?
Im Quelltext steht doch alles drin !
Zitat: Ich selbst (1998)
  Mit Zitat antworten Zitat
Benutzerbild von Steve
Steve

Registriert seit: 2. Mär 2004
Ort: Würzburg
730 Beiträge
 
Delphi 2006 Personal
 
#3

Re: Ein Rechteck auf TBitmap.Canvas mit transparenter Farbe?

  Alt 18. Okt 2004, 13:04
Delphi-Referenz durchsuchenFrameRect ist evtl. Dein Freund

Gruß
Stephan
Stephan B.
Wer andern eine Grube gräbt ist Bauarbeiter!
Wer im Glashaus sitzt, sollte sich lieber im Dunkeln ausziehen!
Außerdem dieser Satz kein Verb...
  Mit Zitat antworten Zitat
ak1

Registriert seit: 12. Okt 2003
243 Beiträge
 
#4

Re: Ein Rechteck auf TBitmap.Canvas mit transparenter Farbe?

  Alt 18. Okt 2004, 13:29
Sorry, leider helfen mir eure Tips nicht weiter. Ein eigenes Fillrect zu programmieren wäre mir auch zu aufwändig.
  Mit Zitat antworten Zitat
Benutzerbild von Steve
Steve

Registriert seit: 2. Mär 2004
Ort: Würzburg
730 Beiträge
 
Delphi 2006 Personal
 
#5

Re: Ein Rechteck auf TBitmap.Canvas mit transparenter Farbe?

  Alt 18. Okt 2004, 13:43
Hab ich Dich da überhaupt richtig verstanden..?

Du willst n Rechteck malen, aber nicht wie bei FillRect ausgefüllt, sondern der Inhalt soll transparent sein, d.h. nur der Rahmen sichtbar?
Oder soll das Rechteck nur teilweise transparent sein? (Bestimmter Bereich, oder wie bei z.B. Office 'halbtransparent', oder was denn nun....)??
Fragen über Fragen -g-

Gruß
Stephan
Stephan B.
Wer andern eine Grube gräbt ist Bauarbeiter!
Wer im Glashaus sitzt, sollte sich lieber im Dunkeln ausziehen!
Außerdem dieser Satz kein Verb...
  Mit Zitat antworten Zitat
ak1

Registriert seit: 12. Okt 2003
243 Beiträge
 
#6

Re: Ein Rechteck auf TBitmap.Canvas mit transparenter Farbe?

  Alt 18. Okt 2004, 13:51
Sagen wir es so: Ich habe etwas mit Bitmap.Canvas gezeichnet. Jetzt möchte ich im Anschluss daran mit einem transparenten farbigen Rechteck einen bestimmten Teil dieser Zeichnung markieren. Dabei soll die Zeichnung an der Stellen nicht überdeckt werden, weshalb das Rechteck mit transparenter Farbe gefüllt wird.
  Mit Zitat antworten Zitat
Benutzerbild von Ben1
Ben1

Registriert seit: 11. Okt 2004
Ort: Rostock
36 Beiträge
 
Delphi 6 Personal
 
#7

Re: Ein Rechteck auf TBitmap.Canvas mit transparenter Farbe?

  Alt 18. Okt 2004, 13:51
Beispiel aus der Hilfe, zum transparenten Zeichnen einer Bitmap.

Code:
procedure TForm1.Button1Click(Sender: TObject);

var
  Bitmap : TBitMap;
begin
  Bitmap := TBitmap.Create;
  try
    with Bitmap do begin
      LoadFromFile('C:\Program Files\Common Files\Borland Shared\Images\Splash\256color\factory.bmp');
      Transparent := True;
      TransParentColor := BitMap.canvas.pixels[50,50];
      Form1.Canvas.Draw(0,0,BitMap);
      TransparentMode := tmAuto;
      Form1.Canvas.Draw(50,50,BitMap);
    end;
  finally
    Bitmap.Free;

  end;
end
Oder suchst du einfach danach -> canvas.brush.style:= bsclear;
Das zeichnet das nächste Objekt ohne Inhalt, nur den Rahmen.

Wenn du Durchscheineffekte haben willst dann nur über ein OR des Bildschirminhaltes oder manuelle Pixelmanipulation
Ben
---------------------------------------
Spielanleitung !? Wieso ? Wozu ?
Im Quelltext steht doch alles drin !
Zitat: Ich selbst (1998)
  Mit Zitat antworten Zitat
ak1

Registriert seit: 12. Okt 2003
243 Beiträge
 
#8

Re: Ein Rechteck auf TBitmap.Canvas mit transparenter Farbe?

  Alt 18. Okt 2004, 15:18
Zitat von ak1:
Sagen wir es so: Ich habe etwas mit Bitmap.Canvas gezeichnet. Jetzt möchte ich im Anschluss daran mit einem transparenten farbigen Rechteck einen bestimmten Teil dieser Zeichnung markieren. Dabei soll die Zeichnung an der Stellen nicht überdeckt werden, weshalb das Rechteck mit transparenter Farbe gefüllt wird.
Na, hat niemand eine Idee?
  Mit Zitat antworten Zitat
Benutzerbild von Ben1
Ben1

Registriert seit: 11. Okt 2004
Ort: Rostock
36 Beiträge
 
Delphi 6 Personal
 
#9

Re: Ein Rechteck auf TBitmap.Canvas mit transparenter Farbe?

  Alt 18. Okt 2004, 15:48
Nur weil dir die Ideen zu aufwendig sind kannst du doch nicht gleich behaupten das keiner eine hat.
Das was du willst ist typisches Alphablending, etwas das nunmal von vielen Anwendungen nicht automatisch unterstützt wird.

Es ist doch nicht weiter schwer alle Pixel im Bereich durchzulaufen und für jeden nach einer simplen Formel den neuen Farbwert zu berechnen.

Und so geht das :

alte Farbe(Rd, Gd, Bd)
überdeckende Farbe (Rs, Gs, Bs)
A= Alphachannel = transparens der Farbe in %, 0 bis 1

Die neue Farbe ergibt sich dann so :

rot = Rs * A + Rd * (1 - A)
grün = Gs * A + Gd * (1 - A)
blau = Bs * A + Bd * (1 - A)

um deine Farben in die rot, grün und blau Anteile zu zerlegen und wieder zusammen zu fügen gibt es fertig Funktionen (siehe Hilfe RGB).
Das zu programmieren ist eine Sache von vielleicht 10 Minuten !
Ben
---------------------------------------
Spielanleitung !? Wieso ? Wozu ?
Im Quelltext steht doch alles drin !
Zitat: Ich selbst (1998)
  Mit Zitat antworten Zitat
ak1

Registriert seit: 12. Okt 2003
243 Beiträge
 
#10

Re: Ein Rechteck auf TBitmap.Canvas mit transparenter Farbe?

  Alt 18. Okt 2004, 16:03
Wenn man weiss wie es geht, dann dauert es vielleicht nur 10 Minuten.
Bin in der Grafikprogrammierung aber nicht so bewandt. Werde mir das mal genauer anschauen.

Ein wenig Beispiel-Quellcode wäre ein super feiner Zug.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 07:33 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