Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Visualizar Ficheros PNG

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Visualizar Ficheros PNG Responder citando

Buenas,

Estoy haciendo algunas pruebas con la Libreria gdiplus.lib, y he estado probando, pero al cargar la Imagen PNG, me sale siempre fondo blanco,es decir, se ve con el tamaño ( altura y anchura ) de la imagen pero de color Blanco.

Alguna Idea de que puede ser ?

Dejo muestra del fuente del fichero.cpp

Código:


#include <vcl>
#pragma hdrstop

#include <algorithm>
using std::min;
using std::max;
#include <gdiplus>

#include "Unit1.h"
//----------------------------------------

#pragma hdrstop
//---------------------------------------------------------------------------
#pragma package(smart_init)
//---------------------------------------------------------------------------
using namespace Gdiplus;
#pragma comment(lib, "gdiplus.lib") // cargamos la libreria
//---------------------------------------------------------------------------

#pragma resource "*.dfm"
TForm1 *Form1;

  Gdiplus::GdiplusStartupInput gdiplusStartupInput;
  ULONG_PTR  gdiplusToken;

//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
  : TForm(Owner)
{
   // inicializamos el GDI+
   Gdiplus::GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);

}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
   // Graphics::TBitmap *SrcBitmap=new Graphics::TBitmap;
  /*Gdiplus::GdiplusStartupInput gdiplusStartupInput;
   ULONG_PTR  gdiplusToken;
   // inicializamos el GDI+
   GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL); */

   TOpenDialog *op = new TOpenDialog(NULL);
   if (op->Execute())
   {
      PatBlt(pImagen->Canvas->Handle, 0, 0, pImagen->Width, pImagen->Height, WHITENESS);
      pImagen->Refresh();

      Gdiplus::Graphics graphics(pImagen->Canvas->Handle); //Handle to the device context
      Gdiplus::Image imagen( ((WideString)op->FileName).c_bstr()   );

      pImagen->Width  = imagen.GetWidth();
      pImagen->Height = imagen.GetHeight();

      graphics.DrawImage(&imagen, 0, 0, imagen.GetWidth(), imagen.GetHeight());

      pImagen->Repaint();
      pImagen->Invalidate();
   }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormDestroy(TObject *Sender)
{
 //shutdown GDI+
 Gdiplus::GdiplusShutdown(gdiplusToken);
}




Sabeis el porque ?

Por cierto el objeto pImagen es un Objeto TImage estatico del formulario.
_________________
Saludos
~~~~~~~~
Wink _Willa
~~~~~~~~
www.avancegame.com
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Mensaje    Asunto: Responder citando

En este momento no puedo hacer pruebas porque tengo que salir en un minuto...

Prueba del siguiente modo:
Código:
TOpenDialog *op = new TOpenDialog(NULL);
pImagen->AutoSize = true;
if (op->Execute())
{
    Gdiplus::Image imagen(WideString(op->FileName));
    pImagen->Picture->Bitmap->Width = imagen.GetWidth();
    pImagen->Picture->Bitmap->Height = imagen.GetHeight();

    Gdiplus::Graphics graphics(pImagen->Canvas->Handle);
    graphics.DrawImage(&imagen, 0, 0);
}
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mensaje    Asunto: Responder citando

Q. Tal _Leo,

Funcionar funciona, pero no todo lo deseable, al cargar un BMP, se vee
bien, pero al cargar un PNG ( no respeta el ancho ni la altura, ademas no llega a visualizarse bien, al menos el trozo que ocupa antes el bmp, se ve como sobreimpresionado ).

Lo que trato de hacer es pintar usando fuentes graficas, en lugar de TTF , para evitar la perdida de calidad "los escalones que se aprecian en los fuentes TTF sobre todo cuando estos son de un tamaño más grande de lo normal", pero además estas fuentes tengan transparencia, que no permita la perdida de calidad por el color de fondo que se tenga debajo de la fuente.
He probado usar BMP con transparencia pero solo funciona con el mismo color de fondo que la Fuente BmP, es decir, aplicado al mismo color de fondo que el de la fuente bien, pero cuando lo quiero aplicar a otro fondo distinto del fondo del BMP de la fuente, esta pierde calidad. por eso es el tema de intentar probarlo a hacerlo con PNG, se entiende que las transparencias serán mejores.

No se si con todo este rollo te habras entereado, espero que si

Quizas exista otra forma más sencilla de usar font-Graficas,
No se si habla algo que me pueda servir como de guia u otra forma de hacer esto ?

pd. No puedo colgar imagenes pq no tengo espacio disponible en ningu sitio, ni zona donde te pueda enviar un demo y asi ver visualmente los defecto que ocurre o lo que quiero hacer.
_________________
Saludos
~~~~~~~~
Wink _Willa
~~~~~~~~
www.avancegame.com
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.