PNG benutzen



  • Dann instantiiere man die Komponenten im Code, oder man erwerbe eine Vollversion.



  • 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ß..


Anmelden zum Antworten