TPNGObject - Erstellen Sie eine neue leere Bild und ziehen Sie durchscheinend Bilder drauf
Ich Baue eine Anwendung, die "virtuellen windows". Die Ausgabe ist TImage
Objekt.
1) Die Anwendung lädt, Fenster-skin-Dateien in TPNGObject
's:
2.) Dann Anwendung erstellen Sie eine neue leere TPNGObject
, und die Größe des skin-Dateien zu den notwendigen Größen und zeichnen Sie diese auf das leere Bild. Sollte in etwa so Aussehen:
3) Und die endgültige Ausgabe auf TImage
:
Das problem ist, dass ich weiß, wie das erstellen einer komplett leeren off-screen Bild. Natürlich könnte ich das einfach machen die Haut von Dateien auf TImage
jedes mal, aber es ist einfacher und besser zu skalieren skin-Dateien und erstellen Sie die Fenster einmal statt.
Ich bin mit der PNG-Library von Gustavo Daud, version 1.564 (31 Juli, 2006).
- Einige mögliche Erklärungen für die schlechte Antwort, dass Sie nicht, zumindest meiner Meinung nach, deutlich genug, was fehlschlägt. Auch, D7, ist eher die alten und es gab durchaus eine Menge von konkurrierenden PNG-Klassen. Und es ist Sonntag! Sein patient. Auch ein BMP wird nicht helfen, weil D7 BMP-support war ziemlich lahm.
- Können Sie bitte lassen Sie uns wissen Sie genau, welche PNG-Bibliothek, die Sie verwenden? Es gibt viele da draußen, und wir können nicht helfen, ohne zu wissen, was es ist.
- Roberts ist mit pngimage von Gustavo Daud, version mindestens 1.56. Roberts, Ihr Kommentar scheint vernünftig genug, aber öffnen Sie das erzeugte Bild in ein Bild-editor, und alle Kanäle sind leer.
- Ich bin untersucht, und ich bin genauso ratlos wie du. Ich bin ausdrücklich Zeichnung auf die Leinwand, aber kein Bild kommt...
- Roberts, Sie haben Martijn Saly ' s (Thany) Erweiterungen, insbesondere 'pngfunctions.pas'?
- Ich habe nur PNGFunctions.pas.
- Bevor die Menschen, die versuchen, Sie zu beantworten Frage aus der hand, es sieht aus, als ob Sie bedeutet etwas anderes Fragen. Der Umfang der Frage geändert hat. Diese Frage sollte weiterhin über die spezifischen PNG-Konstruktor geben schlechte Ergebnisse, und Sie sollten sich Fragen, eine andere Frage, über die Schichtung, transparente Bilder. Als ich dachte, habe ich deutlich gemacht in beide meine Antworten, die alle die primäre Zeichnung getan werden sollte, bitmaps, kopiert und in das PNG -, wie gebraucht. Transparenz kann erreicht werden, in bitmaps, und das einzige mal, sollten Sie sich sorgen machen über das, PNG, wenn Sie die Arbeit mit PNG-Dateien.
- Und nochmal meine Letzte Bemerkung: Sie sollten einen Schritt zurück und werfen Sie einen Blick auf das größere Bild, welches Projekt Sie zu tun versuchen. Die PNG-Bibliothek (obwohl möglich) nicht unbedingt gedacht, nur für transparente Zeichnung. Es ist gedacht für die Arbeit mit PNG-Dateien.
- Tut mir Leid, aber die Frage ist, in keiner Weise im Zusammenhang mit der ursprünglich gestellten Frage. Meine Antworten sind jetzt sinnlos und bekommst downvotes von hier aus auf. Man sollte Sie nie ändern Ihre Frage wie oben. Hinzufügen von Informationen, ja. Re-Formulierung, ja. Aber das löschen der Inhalt der Frage und schreiben eine andere Frage, ist ein Albtraum für uns.
- PS Großem detail zu erklären, was Sie zu Fragen sind, einfach zu ersetzen Ihre Frage mit einer anderen Frage ist die Letzte Sache, die Sie tun möchten.
- Es ist dieselbe Frage, die ich nicht erwähnt habe, einige Dinge. Das ist alles
- Ich glaube, das Wort "Durchscheinend" wird Ihre Frage viel mehr klar, statt "Fast Durchsichtig". Fast Transparent machte mich verwirrt, aber wenn es die Transluzenz, die du meinst, dann ist das eine ganz andere Ballspiel. Ist es das, was du meinst?
- Nochmal sorry, mein Englisch ist schlecht, ich komme aus anderen Land und ja, "Durchscheinend", das ist es, was ich meinte.
- Großen Dank für Eure Hilfe, auch google für
PNGFunctions.pas
- es gibt eine Menge guter Funktionen, die innerhalb Sie ;), lernen im PNG ein bisschen besser jetzt. - Ich selbst kenne kaum PNG und Lerne es, aber ich würde noch empfehlen, nur verwenden Sie PNG wenn Sie beabsichtigen, arbeiten mit PNG-Dateien. Ansonsten werden Bitmaps sind vollständig in der Lage, die gleichen Dinge, die Sie wollen.
- Auch Teil der Grund, ich will Ihnen helfen, mit diesem ist, dass ich in der Tat bin ironischerweise etwas ähnliches - Gebäude angepasste Fenster mit Glas-Effekt.
- Ja, ich sehe deine Fragen ^^. Da kann man nicht einfach im paint ein PNG über die zweite PNG ich heruntergeladen Quelle aus dem Russischen blog und jetzt kann ich ein PNG von 2 PNG ' s
- Aber ich denke, ich werde aufgeben, denn ich weiß nicht, wie man leeres PNG. Ich denke, meine Antwort ist die einzige, die...
- Eigentlich hatte ich schon so ein Programm, ich baute es vor einem Monat, aber wegen der Sicherung, ich vergaß, es zu kopieren. Aber jetzt will ich es von Grund auf besser mit Fenster-Erstellung.
- Das problem könnte sein, etwas so einfaches wie zu vergessen, um die Breite/Höhe der PNG-Objekt. Ich habe diesen Fehler viele Male (mit bitmaps). Auch von den Klängen der es, du nimmst an einem Projekt Weg, über Ihren Kopf, und es wird viele kleine Stücke zusammen zu arbeiten - und das ist immer Wahnsinn.
- > "Wie man leere PNG" - (1) Erstellen Sie eine bitmap, die Größe, pixel-format 24 bit, (2) Erstellen Sie png-Objekt, dann
png.Assign(bmp)
(3)png.CreateAlpha
. - Aber ich brauche nicht ein weißes Bild!!! Leer, leer - es bekommen?
- Dann verwenden Sie die CreatePNG Verfahren, die ich erwähnt habe in der Antwort gelöscht. Irgendwie scheinen Sie sich nicht zu haben, bekam es aber..
- Das hat nicht funktioniert.
- Es ist eine komplett transparente png -, dass ich gezeigt habe, wie einige schreiben sichtbaren text auf es und der rest ist transparent. Ist nicht, was Sie bedeuten, indem Sie eine leere png? Was können Sie nicht tun? Was hat nicht funktioniert?
- Oh, tut mir Leid. Ich glaube nicht, dass der code nicht mehr, dass Sie es gelöscht haben. Ich wusste nicht, wie es zu benutzen. Jetzt, nach diesen Tagen habe ich gelernt, wie man mit PNG. Sorry nochmal. Können Sie es wiederherstellen oder senden an [email protected] ??
- Wiederhergestellt wird, sehen Sie, wenn Sie ein leeres png.
- Haben Sie gesehen, FireMonkey und seine Fähigkeit, die Haut Ihre Anwendung für jedes Betriebssystem (und eigentlich kompilieren es für diejenigen, die als gut).
- Nein, Nein, Nein. Das ist nicht das, was ich Tue. Ich bin nicht skinnen meine Anwendung. Ich bin makking skinnable Formen auf
TImage
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den unten verwendet
CreatePNG
Verfahren der 'pngfunctions.pas' von Martijn Sally, die aus einer Erweiterung Bibliothek (pngcomponents) zu pngimage.Hier ist die Ausgabe (schwarze, weiße Rechtecke sind TShapes):
Meine andere Antwort ist eine weitere alternative, die ich vorschlagen. Aber Ihre Frage noch aufwirft, ein Problem: Die PNG-library muss entweder ein bug, welcher verhindert, dass jede Leinwand Zeichnung nicht sichtbar (nach Verwendung von CreateBlank Konstruktor mit COLOR_RGBALPHA als Farb-Typ) oder wir sind alle etwas fehlt.
Wie es aussieht ist die einzige Lösung, die ich sehen kann, ist (wie Sie erwähnen in Ihrem Bearbeiten) verwenden Sie ein Bitmap-tun Sie Ihre Zeichnung statt. Verwenden Sie die transparenten Eigenschaften der bitmap (
Transparent: Bool
undTransparentColor: TColor
) um den transparenten Bereich des Bildes, dann, wenn Sie Sie brauchen ein transparentes PNG, kopieren Sie einfach die bitmap auf das neue PNG-Objekt...Und die weiße Fläche sollte das Bild transparent sein. Es gibt andere Möglichkeiten der Bewältigung der transparente Bereich, aber das ist ein anderes Thema.
Bild:
Ist es das, was Sie zu tun versuchen?
TransparentColor = clWhite
und ich Male meine fast transparenten Pixel auf das leere Bild. Die Pixel schauen, wie es ist weiß lackiert, die unter Ihnen. Ich kann ziehen Es durch mein selbst und senden Sie das Foto. Wie ich schon sagte, habe ich gelöscht, das Projekt, und ich habe keine Zeit einen neuen zu machen, also werde ich die Farbe von meinem selbst.Ich entschuldige mich für die Menschen, dass ich verwirrt Ihre Köpfe.
Es stellt sich heraus
CreateBlank
funktioniert wie gewollt. Das problem war, dass ich die Zeichnung, die auf PNG-PNG-Leinwand (PNG.Canvas.Draw
).Canvas
nicht wirklich unterstützen Transparenz. Zeichnen Sie eine durchscheinende PNG auf einem anderen PNG benötigen Sie eine Prozedur/Funktion verschmilzt, dass jene beiden Schichten zusammen. Mit etwas googlen landete ich mit dieser Prozedur:Verwendung:
Wieder, ich bin wirklich Leid für Benutzer, die helfen wollten, aber konnte nicht wegen der nicht mich zu verstehen.
Ich habe keine Antwort auf diese Frage, aber ich habe herausgefunden, wie man dasselbe Ergebnis mit jedem PNG-editor. Erstellt habe ich leere 1000x1000 PNG-Bild und speicherte es in meinem Verzeichnis der Anwendung. Dann öffne ich dieses Bild in meinem Programm und ändern Sie die Größe Bild zu benötigten Größen (kleiner natürlich) und das ist der trick.
CreateBlank
Konstruktor für nichts.