 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
_Willa Capt


Registrado: 28 Ago 2002Mensajes: 169Ubicación: Madrid ( España )
|
Publicado: Lun 11 Feb, 2008 4:20 pm Asunto: Visualizar Ficheros PNG |
|
|
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
~~~~~~~~
_Willa
~~~~~~~~
www.avancegame.com |
|
| Volver arriba |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Lun 11 Feb, 2008 5:24 pm Asunto: |
|
|
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 |
|
 |
_Willa Capt


Registrado: 28 Ago 2002Mensajes: 169Ubicación: Madrid ( España )
|
Publicado: Lun 11 Feb, 2008 6:51 pm Asunto: |
|
|
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
~~~~~~~~
_Willa
~~~~~~~~
www.avancegame.com |
|
| Volver arriba |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|