PNG benutzen
-
audacia schrieb:
Dann instantiiere man die Komponenten im Code
Wie meinst du das?!
audacia schrieb:
oder man erwerbe eine Vollversion.
Ich bin ne arme Sau.
-
Hallo
Im Quellcode direkt Instanzen erstellen
TPNG* png = new TPNG(); ... delete png;
bis bald
akari
-
Und wie mach ich das wenn der DelphiCode nicht verwendet werden kann?!
-
Kann ich auch die TImage Componente aus der Testversion vom RAD Studio in den Turbo C++ Explorer reinbekommen? Die kann ja PNGs..
-
No-One schrieb:
Und wie mach ich das wenn der DelphiCode nicht verwendet werden kann?!
Das kann er.
No-One schrieb:
Kann ich auch die TImage Componente aus der Testversion vom RAD Studio in den Turbo C++ Explorer reinbekommen?
Das wäre nicht nur technisch etwas außerhalb deines Machbarkeitsradius, sondern noch dazu illegal.
-
Hi,
in der Free-Download-Version des Turbo C++ 2006 kannst du keine Dritt-Komponenten und keine IDE-Addins installieren.
Insofern kannst du pngdelphi wohl beiseite legen.No-One schrieb:
Kann ich auch die TImage Componente aus der Testversion vom RAD Studio in den Turbo C++ Explorer reinbekommen? Die kann ja PNGs..
.
Das TImage ist zwar keine Drittkomponente, trotzdem würd ich den Gedanken schnell vergessen...
Zum Einlesen und Darstellen einer PNG-Datei gibts auch noch andere Wege...mfg
kpeter
-
kpeter schrieb:
in der Free-Download-Version des Turbo C++ 2006 kannst du keine Dritt-Komponenten und keine IDE-Addins installieren.
Es ist aber durchaus möglich, 3rd-Party-Komponenten zu benutzen - einfach zum Projekt hinzufügen und im Code instantiieren.
-
audacia schrieb:
Es ist aber durchaus möglich, 3rd-Party-Komponenten zu benutzen - einfach zum Projekt hinzufügen und im Code instantiieren.
Ja.
Aber im vorliegende Fall mit der pngdelphi-Kompo und den *.obj-Dateien, die etwas an sich haben, was dem Turbo missfällt
,
kommt eben nur diese lapidare Message(s.o.).mfg
kpeter
-
Das würde ich nicht über 3rd Party Komponenten machen sondern mich einfach mal mit GDI+ beschäftigen.
-
Ich habe PngDelphi eben mal mit Turbo C++ Explorer ausprobiert, und es funktioniert auf Anhieb.
GDI+ wäre natürlich auch eine Option.
-
audacia schrieb:
Ich habe PngDelphi eben mal mit Turbo C++ Explorer ausprobiert, und es funktioniert auf Anhieb.
Mit welcher Version ?
-
Die oben verlinkte.
-
Könntest d umir vllt. sagen wie ich das Teil verwenden muss ?
-
Könnte jemand so liebenswürdig sein und einem vollDAU sagen wie das funktioeren könnte oder wie ichs anders hinbekomm?
-
Hi,
Wenn ich mich nicht irre, war eine Installationsanleitung im Paket (PngDelphi.chm - Installing the component).
mfg
kpeter
-
Schon aber da steht nur wie ich es als Komponente in der IDE installiere aber diesen Weg kann ich im Turbo C++ ja nicht gehn..
-
No-One schrieb:
Schon aber da steht nur wie ich es als Komponente in der IDE installiere aber diesen Weg kann ich im Turbo C++ ja nicht gehn..
Den anderen Weg muss jemand anders zeigen; frag öfters mal nach
Nimm w.o. vorgeschlagen die GDI+. Hier das simpelste, Code Einbinden in die Paint-Methode.
Hab hier als Anzeige-DC ein TPanel genommen.Gdiplus::Bitmap *pBitmap; pBitmap = Gdiplus::Bitmap::FromFile(L"pngtest.png"); if( pBitmap ) { HDC hdc = GetDC(Panel1->Handle); Gdiplus::Graphics graphics(hdc); graphics.DrawImage(pBitmap, Gdiplus::PointF(0.0f, 0.0f)); } delete pBitmap;
Die Gdiplus.lib dem Projekt hinzufügen. Dazu noch das GDI+ Startup:
//--------------------------------------------------------------------------- #define STRICT // erforderlich wegen Mehrdeutigkeiten #include <vcl.h> #pragma hdrstop #include <gdiplus.h> #include "main_png.h" using namespace Gdiplus; //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { Gdiplus::GdiplusStartupInput startupInput; Gdiplus::GdiplusStartup(&token, &startupInput, NULL); } //--------------------------------------------------------------------------- _fastcall TForm1::~TForm1(void) { Gdiplus::GdiplusShutdown(token); }
Mit der libpng hast du eine weitere Möglichkeit, s. hier http://www.libpng.org/pub/png/libpng.html
mfg
kpeter
-
Na immerhin geht das!
Vielen lieben Dank! Werd wohl vorerst damit arbeiten.MFG
-
Kann mir jemand sagen warum bei der GDI+ Variante an manchen Pcs die Transparenz nicht geht? Das PNG wird viereckig und der eigentliche transparente Teil Weiß..
-
No-One schrieb:
Das PNG wird viereckig...
quadratisch ?
Probier mal die Funktion bei den "manchen Pcs" aus:
void __fastcall TForm1::Button1Click(TObject *Sender) { Gdiplus::Graphics graphics(Image1->Canvas->Handle); //Handle to the device context //Load the image from a file Gdiplus::Image image(L"example01.gif"); // Create an ImageAttributes object and set its color matrix. Gdiplus::ImageAttributes imageAtt; Gdiplus::ColorMatrix cm = {1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f}; cm.m[3][3]+=0.01f; //transparency imageAtt.SetColorMatrix(&cm, Gdiplus::ColorMatrixFlagsDefault, Gdiplus::ColorAdjustTypeBitmap); graphics.DrawImage(&image, Gdiplus::Rect(0, 0, image.GetWidth(), image.GetHeight()), 0, 0, image.GetWidth(), image.GetHeight(), Gdiplus::UnitPixel, &imageAtt); }