AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Einige Fragen zu graphics32
Thema durchsuchen
Ansicht
Themen-Optionen

Einige Fragen zu graphics32

Offene Frage von "nano"
Ein Thema von nano · begonnen am 7. Sep 2005 · letzter Beitrag vom 9. Sep 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von nano
nano

Registriert seit: 22. Aug 2005
Ort: Deggendorf
51 Beiträge
 
Delphi 7 Enterprise
 
#1

Einige Fragen zu graphics32

  Alt 7. Sep 2005, 12:14
Moin moin, Kollege =)

Arbeite gerade an einem Projekt mit graphics32 und gleich ein Paar Fragen:

1.) Der Benutzer soll einfache Elemente (Linie, Rechteck,..) zeichnen können. Dazu werden zwei Ebenen erstellt: In der einen wird das fertige Bild gezeichnet, in der zweiten nur temporäre Bilder (Wenn der Benutzer beispielsweise bei gedrückter Maustaste ein Rechteck festlegt). Dabei muss die temporäre Ebene stets gelöscht und neu gezeichnet werden.

Allerdings übermalt die Prozedure Clear(); alle anderen ebenen mit Schwarz, obwohl ich DrawMode auf dmBlend gesetzt habe.

Wie kann man die Ebene säubern ohne sie mit Farbe zu füllen? Damit man die darunterliegenden Ebenen nicht übermalt





2.) Es soll nur ein bestimter Bereich des Bildes ausgeschnitten werden. Dazu wird eine Ebene erstellt, die das Auswahlmuster enthält (Bsp: Kreis). Nun soll der vom Kreis überdeckter Bereich aus der darunterliegender Ebene in ein anderes Bitmap kopiert werden. Wie ist das möglich?
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Einige Fragen zu graphics32

  Alt 7. Sep 2005, 13:57
Mahlzeit!

Zitat von nano:
Allerdings übermalt die Prozedure Clear(); alle anderen ebenen mit Schwarz, obwohl ich DrawMode auf dmBlend gesetzt habe.

Wie kann man die Ebene säubern ohne sie mit Farbe zu füllen? Damit man die darunterliegenden Ebenen nicht übermalt
TBitmap32.Clear gibt es in 2 überladenen Versionen. Eine davon bietet dir die Möglichkeit die Füllfarbe zu definieren:
  MyBmp.Clear(Color32(r, g, b, ALPHA)); Die Angabe von "Alpha" ist optional, und Standardwert ist "voll deckend". Das ist dein Kandidat


Zitat von nano:
2.) Es soll nur ein bestimter Bereich des Bildes ausgeschnitten werden. Dazu wird eine Ebene erstellt, die das Auswahlmuster enthält (Bsp: Kreis). Nun soll der vom Kreis überdeckter Bereich aus der darunterliegender Ebene in ein anderes Bitmap kopiert werden. Wie ist das möglich?
Zunächst mal einfach via TBitmap32.Draw{To}. Dabei gibt es massig überladene Versionen die verschiedene Angaben zu Positionierung und Größe ermöglichen. Das Ausmaskieren des Kreises wirst du von Hand machen müssen. Ein Ansatz: Erstelle ein s/w-Bitmap in der Größe deines Kreises und zeichne ihn (gefüllt) rein. Dann nimmst du deinen o.g. kopiertes Bitmap, und belegst es mit "IntensityToAlpha()" (-> Hilfe zur G32) mit eben diesem s/w-Bild als Alphamaske. Anschließend dieses Bild, dass die maskierte Kopie enthält, auf dein Zielbitmap zeichnen (auf dmBlend achten!).


Gruss,
Fabian
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von nano
nano

Registriert seit: 22. Aug 2005
Ort: Deggendorf
51 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Einige Fragen zu graphics32

  Alt 7. Sep 2005, 14:45
Zitat von dizzy:
Mahlzeit!

Zitat von nano:
Allerdings übermalt die Prozedure Clear(); alle anderen ebenen mit Schwarz, obwohl ich DrawMode auf dmBlend gesetzt habe.

Wie kann man die Ebene säubern ohne sie mit Farbe zu füllen? Damit man die darunterliegenden Ebenen nicht übermalt
TBitmap32.Clear gibt es in 2 überladenen Versionen. Eine davon bietet dir die Möglichkeit die Füllfarbe zu definieren:
  MyBmp.Clear(Color32(r, g, b, ALPHA)); Die Angabe von "Alpha" ist optional, und Standardwert ist "voll deckend". Das ist dein Kandidat
Undefinierter Bezeichner "Alpha", oder hab ich was falsch gemacht?

Clear(Color32(0, 0, 0, ALPHA));




ps: Mit dem Ausmaskieren warte ich noch, da ich jetzt einen komplett anderen Ansatz ausprobieren möchte! Danke!!
  Mit Zitat antworten Zitat
Benutzerbild von nano
nano

Registriert seit: 22. Aug 2005
Ort: Deggendorf
51 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Einige Fragen zu graphics32

  Alt 7. Sep 2005, 14:47
Oops! Alpha ist vom Typ Byte 255... Hab jetzt auch auf null gesetzt und es funzt, danke! =)

Aber was genau bewirkt der Wert von Alpha?
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Einige Fragen zu graphics32

  Alt 7. Sep 2005, 14:59
"Alpha" ist der in Grafikerkreisen übliche Begriff für "Transparenz". Je höher die Tranparenz, desto durchscheinender. ein Glasfenster hat idealerweise eine Transparenz von 255 bzw. 100%

(bw: falls dir mal "Gamma" über den Weg laufen sollte, das ist der Wert für die Helligkeitskorrektur )
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
SMO

Registriert seit: 20. Jul 2005
178 Beiträge
 
Delphi XE6 Professional
 
#6

Re: Einige Fragen zu graphics32

  Alt 7. Sep 2005, 15:06
Zitat von DGL-luke:
"Alpha" ist der in Grafikerkreisen übliche Begriff für "Transparenz". Je höher die Tranparenz, desto durchscheinender. ein Glasfenster hat idealerweise eine Transparenz von 255 bzw. 100%
Genau andersherum. Der Alpha-Wert bestimmt üblicherweise nicht die Transparenz, sondern die "opacity" (Opazität/Undurchsichtigkeit/Deckfähigkeit). Wenn ein Glasfenster Alpha = 255 bzw. 100% hat, ist es also total undurchsichtig. Alpha = 0 wäre total durchsichtig.
  Mit Zitat antworten Zitat
Benutzerbild von nano
nano

Registriert seit: 22. Aug 2005
Ort: Deggendorf
51 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Einige Fragen zu graphics32

  Alt 7. Sep 2005, 20:45
Danke! Hat wunderbar geklappt...

Nun ne andere Frage:

Kann ich den Zeichenbereich abgrenzen?
Image32 verhält sich komisch: Wenn der Endpunkt einer Linie außerhalb des Bitmaps liegt erfolgt entweder ein Exeption Fehler oder er zeichnet auf der linken seite des Bitmaps wieder weiter...
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Einige Fragen zu graphics32

  Alt 8. Sep 2005, 00:55
TBitmap32 bietet allein 14 Methoden um eine Linie zu zeichnen. Dazu kommen noch die Varianten für LineTo, und man kann auch noch über den Canvas die aus TBitmap bekannte LineTo-Methode verwenden. Welche davon nimmst du?
Alle die ein 'S' in den hinteren Großbuchstaben haben, prüfen ob ausserhalb des gültigen Bereichs gezeichnet werden soll. Alle anderen malen munter weiter (ausser die Methode von Canvas imho), und je nach dem wie du grad Pech hast zeichnen sie in Speicherbereiche die schon nicht mahr zum Bitmap gehören (-> Exception), oder (da das Bitmap ein 1-dimensionales DWord-Array ist) in die nächste Zeile.

Alles was ich bisher gesagt habe lässt sich im Übrigen in der (wie ich finde ziemlich guten) Hilfe zur G32 nachlesen . (Sie ist direkt im G32-Ordner; über die Delphi-IDE via F1 lässt sie sich nicht starten.)

Gruss,
Fabian
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von nano
nano

Registriert seit: 22. Aug 2005
Ort: Deggendorf
51 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Einige Fragen zu graphics32

  Alt 8. Sep 2005, 08:38
Hallo

ich nutze die Line() Methode, weil sie auch den letzen Pixel der Linie mitzeichnet

Mit LineToS, LineToAS, LineToTS (wo da der Unterschied liegt, hab ich auch mit Hilfe der Anleitung nicht verstanden) entstehen Lücken.

Was gibts da noch?
  Mit Zitat antworten Zitat
Benutzerbild von nano
nano

Registriert seit: 22. Aug 2005
Ort: Deggendorf
51 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Einige Fragen zu graphics32

  Alt 8. Sep 2005, 08:41
Hier ein Beispiel für die Lücken =)
Miniaturansicht angehängter Grafiken
unbenannt-2_166.gif  
  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 01:51 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