PNG benutzen
-
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); }
-
kpeter schrieb:
No-One schrieb:
Das PNG wird viereckig...
quadratisch ?
ja
Also wenn man ein Kreis hatte dann ist da eben ein Kreis auf einem Weißen Quadrat, weil er das nicht Transparent macht
Ich probier dein Code jetzt mal aus
-
Hmm das ändert nichts macht nur eben das Bild selber transparenter..
also mal mit einem Testpng.. so solls aussehn:
http://img185.imageshack.us/img185/6862/sosolls.png
und so siehts auf manchen pcs aus:
http://img7.imageshack.us/img7/7791/gehtnix1.jpg
-
Liegts vllt auch nicht am PNG sondern an der Form die ic hRosa gemacht hab und dann Rosa als TransparentColor genommen hab und die Form so transparent gemacht hab, den wie mir grad auffälit geht das Bild eigentlich nicht bis zum Button...
-
Ok es leigt definitiv am PNG wenn ich das Bild 2mal hintereinander verschoben auf die Form mach dann ist das untere von dme weusen Quadrat des oberen bedeckt, wleches genausogroß ist wie das TImage.