Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) TBitButton com imagens PNG


Fuzileir0

Pergunta

Pessoal, na internet sempre acho MUITOS ícones pra colocar nos botões, mas todos são PNG.

Quando uso um conversor pra BMP (pra poder colocar no Glyph), o fundo que era branco (ou transparente) fica preto.

Quando transformo usando o Adobe ImageReady de .png pra .psd, e com o Photoshop de .psd pra .bmp, a qualide cai DRASTICAMENTE. Não fica a mesma coisa de quando PNG.

Queria saber se alguém tem uma solução pra colocar imagens PNG nos botões, visto que outras soluções que me passaram só funcionam no Delphi 7 e eu uso o DELPHI 2007 (versão 11).

Desde já, obrigado

falooouuuu valeu!

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0
Queria saber se alguém tem uma solução pra colocar imagens PNG nos botões, visto que outras soluções que me passaram só funcionam no Delphi 7 e eu uso o DELPHI 2007 (versão 11).

Tente esta solução: Programa para converter .png em .ico e vice versa

http://fc03.deviantart.com/fs21/f/2007/292...y_vista_man.zip

OBS: O programa não é disponibilizado mas voce pode fazer a conversão pelo site

http://www.converticon.com/

http://images.google.com.br/imgres?imgurl=...D2%26hl%3Dpt-BR

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Voce tambem pode baixar o componente TMultiimage e salvar as figuras com outras extensões

http://delphi.icm.edu.pl/ftp/d40free/Multiimage15.zip

*)
interface
(*
Uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, StdCtrls, FileCtrl, TMultiP, ComCtrls, Menus, Buttons, Resize;
*)


  Uses
    Windows,
    //Messages,
    SysUtils,
    Classes,
    Graphics,
    Controls,
    Forms,
    Dialogs,
    TMultiP
  ;

Function ResizeImageBestFit(
  PMultiImage  : TPMultiImage;
  Height       : Integer;
  Width        : Integer): Boolean;

Function ResizeImageKeepProportions(
  PMultiImage  : TPMultiImage;
  NewDimension : Integer;
  IsWidth      : Boolean): Boolean;

Function IL_SaveAsDlg(
  PMultiImage : TPMultiImage;
  Quality     : Integer): Boolean;

Function IL_SaveAs(
  PMultiImage : TPMultiImage;
  inQuality   : Integer;
  sgFileName  : String;
  sgExt       : String;
  sgFileDir   : String): Boolean; OverLoad;

Function IL_SaveAs(
  PMultiImage : TPMultiImage;
  inQuality   : Integer;
  FileName    : String): Boolean; OverLoad;

implementation


//Unit Description UnitIndex Master Index

Function IL_SaveAs(
  PMultiImage : TPMultiImage;
  inQuality   : Integer;
  sgFileName  : String;
  sgExt       : String;
  sgFileDir   : String): Boolean;
Var
  sgFullFile  : String;
begin
  Try
    PMultiImage.JPegSaveQuality := inQuality;
    If Copy(sgFileDir,Length(sgFileDir),1) <> '\' Then
      sgFileDir := sgFileDir + '\';
    sgExt       := UpperCase(sgExt);
    sgFullFile  := sgFileDir + sgFileName;

    screen.cursor := crHourGlass;

    If sgExt = '.BMP'  Then PMultiImage.SaveAsBMP(sgFullFile);
    If sgExt = '.EPS'  Then PMultiImage.SaveAsEPS(sgFullFile);
    If sgExt = '.GIF'  Then PMultiImage.SaveAsGIF(sgFullFile);
    If sgExt = '.JPEG' Then PMultiImage.SaveAsJpg(sgFullFile);
    If sgExt = '.JPG'  Then PMultiImage.SaveAsJpg(sgFullFile);
    If sgExt = '.PCX'  Then PMultiImage.SaveAsPcx(sgFullFile);
    If sgExt = '.PNG'  Then PMultiImage.SaveAsPNG(sgFullFile);
    If sgExt = '.TGA'  Then PMultiImage.SaveAsTGA(sgFullFile);
    If sgExt = '.TIF'  Then PMultiImage.SaveAsTIF(sgFullFile);
    If sgExt = '.SCM'  Then PMultiImage.SaveCurrentMessage(sgFullFile);
    If sgExt = '.CMS'  Then PMultiImage.SaveCurrentCreditMessage(sgFullFile);
    PMultiImage.ImageName := sgFullFile;
    screen.cursor:=crDefault;
    Result := True;
  Except
    Result := False;
  End;
end;

//Unit Description UnitIndex Master Index

Function IL_SaveAsDlg(
  PMultiImage : TPMultiImage;
  Quality     : Integer): Boolean;
Var
  sgFileName : String;
  sgExt      : String;
  sgFileDir  : String;
  SaveDialog : TSaveDialog;
begin
  Result        := False;
  Try
    SaveDialog    := TSaveDialog.Create(nil);
    Try
      sgFileDir   := ExtractFileDir(PMultiImage.ImageName);
      If Copy(sgFileDir,Length(sgFileDir),1) <> '\' Then
        sgFileDir := sgFileDir + '\';
      sgFileName  := ExtractFileName(PMultiImage.ImageName);
      sgExt       := UpperCase(ExtractFileExt(sgFileName));
      SaveDialog.InitialDir := sgFileDir;
      If PMultiImage.BFileType = 'SCM' Then
      Begin
        SaveDialog.Filename:='*.SCM';
        SaveDialog.Filter:='Scroll message|*.scm';
      End
      Else
      Begin
        If PMultiImage.BFileType = 'CMS' Then
        Begin
          SaveDialog.Filename   := '*.CMS';
          SaveDialog.Filter     := 'Credit message|*.cms';
        End
        Else
        Begin
          SaveDialog.Filename   := sgFileName;
          SaveDialog.Filter     :='jpeg|*.jpg|bmp|*.bmp|gif|*.gif|pcx|*.pcx|png|*.png|tif|*.tif|tga|*.tga|eps|*
.eps';
          If (sgExt = '.JPG') Or (sgExt = '.JPEG') Then SaveDialog.FilterIndex := 1;
          If (sgExt = '.BMP')  Then SaveDialog.FilterIndex := 2;
          If (sgExt = '.GIF')  Then SaveDialog.FilterIndex := 3;
          If (sgExt = '.PCX')  Then SaveDialog.FilterIndex := 4;
          If (sgExt = '.PNG')  Then SaveDialog.FilterIndex := 5;
          If (sgExt = '.TIF')  Then SaveDialog.FilterIndex := 6;
          If (sgExt = '.TIFF') Then SaveDialog.FilterIndex := 6;
          If (sgExt = '.TGA')  Then SaveDialog.FilterIndex := 7;
          If (sgExt = '.EPS')  Then SaveDialog.FilterIndex := 8;
        End;
      End;

      If SaveDialog.execute Then
      Begin
        sgFileDir   := ExtractFileDir(SaveDialog.FileName);
        If Copy(sgFileDir,Length(sgFileDir),1) <> '\' Then
          sgFileDir := sgFileDir + '\';
        sgFileName  := ExtractFileName(SaveDialog.FileName);
        sgExt       := UpperCase(ExtractFileExt(sgFileName));
        Result :=
          IL_SaveAs(
            PMultiImage, //PMultiImage : TPMultiImage;
            Quality    , //inQuality   : Integer;
            sgFileName , //sgFileName  : String;
            sgExt      , //sgExt       : String;
            sgFileDir  );//sgFileDir   : String): Boolean;
      End;
    Finally
      SaveDialog.Free;
    End;
  Except
  End;
end;

//Unit Description UnitIndex Master Index

Function ResizeImageKeepProportions(
  PMultiImage  : TPMultiImage;
  NewDimension : Integer;
  IsWidth      : Boolean): Boolean;
Var
  inWidthOld   : Integer;
  inWidthNew   : Integer;
  inHeightOld  : Integer;
  inHeightNew  : Integer;
  Bitmap       : TBitmap;
  boStretch    : Boolean;
begin
  boStretch:= PMultiImage.StretchRatio;
  Bitmap       := TBitmap.Create;
  Try
    Try
      {Set Stretch Off}
      PMultiImage.StretchRatio := False;
      {Create a new bitmap and set its size}
      inWidthOld  := PMultiImage.Picture.Bitmap.Width;
      inHeightOld := PMultiImage.Picture.Bitmap.Height;
      If IsWidth Then
      Begin
       inWidthNew  := NewDimension;
       inHeightNew := (inHeightOld * inWidthNew) div inWidthOld;
      End
      Else
      Begin
        inHeightNew := NewDimension;
        inWidthNew  := (inWidthOld * inHeightNew) div inHeightOld;
      End;
      Bitmap.Width  := inWidthNew;
      Bitmap.Height := inHeightNew;
      {Copy the palette}
      Bitmap.Palette:=PMultiImage.Picture.Bitmap.Palette;
      {Delete the lines needed to shrink}
      SetStretchBltMode(Bitmap.Canvas.Handle,STRETCH_DELETESCANS);
      {Resize it}
      Bitmap.Canvas.Copyrect(Rect(0,
                                 0,
                                 inWidthNew,
                                 inHeightNew),
                            PMultiImage.Picture.Bitmap.Canvas,
                            Rect(0,
                                 0,
                                 PMultiImage.Picture.Bitmap.Width,
                                 PMultiImage.Picture.Bitmap.Height));
      {Copy the palette}
      Bitmap.Palette:=PMultiImage.Picture.Bitmap.Palette;
      {Assign the new smaller bitmap}
      PMultiImage.Picture.Bitmap.Assign(Bitmap);
      {Free the bitmap}

      Result := True;
    Except
      Result := False;
    End;
  Finally
    Bitmap.Free;
    PMultiImage.StretchRatio := boStretch;
  End;
end;

//Unit Description UnitIndex Master Index

Function ResizeImageBestFit(
  PMultiImage  : TPMultiImage;
  Height       : Integer;
  Width        : Integer): Boolean;
Var
  inWidthOld   : Integer;
  inHeightOld  : Integer;
  boStretch    : Boolean;
  IsWidth      : Boolean;
  NewDimension : Integer;
begin
  boStretch    := PMultiImage.StretchRatio;
  Try
    Try
      PMultiImage.StretchRatio := False;
      inWidthOld  := PMultiImage.Picture.Bitmap.Width;
      inHeightOld := PMultiImage.Picture.Bitmap.Height;
      IsWidth     := (((inHeightOld * Width) div inWidthOld)<=Height);
      If IsWidth Then
      Begin
        NewDimension := Width;
      End
      Else
      Begin
        NewDimension := Height;
      End;
      Result :=
        ResizeImageKeepProportions(
          PMultiImage  ,  //PMultiImage  : TPMultiImage;
          NewDimension ,  //NewDimension : Integer;
          IsWidth      ); //IsWidth      : Boolean): Boolean;
    Except
      Result := False;
    End;
  Finally
    PMultiImage.StretchRatio := boStretch;
  End;
end;

//Unit Description UnitIndex Master Index

Function IL_SaveAs(
  PMultiImage : TPMultiImage;
  inQuality   : Integer;
  FileName    : String): Boolean; OverLoad;
Var
  sgFileName  : String;
  sgExt       : String;
  sgFileDir   : String;
Begin
  sgFileName  := ExtractFileName(FileName);
  sgExt       := ExtractFileExt(FileName);
  sgFileDir   := ExtractFileDir(FileName);
  Result :=
    IL_SaveAs(
      PMultiImage ,  //PMultiImage : TPMultiImage;
      inQuality   ,  //inQuality   : Integer;
      sgFileName  ,  //sgFileName  : String;
      sgExt       ,  //sgExt       : String;
      sgFileDir   ); //sgFileDir   : String): Boolean; OverLoad;
End;

end.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Jhonas, o programa pra converter .png em .ico funciona, mas não encontrei soluções que convertam .png em .bmp que não estrague a imagem.

Sobre o componente MultiImage, eu baixei mas não sei com instalar. Teria como me explicar? Uso o Delphi 2007! Falooou! Brigadão

Link para o comentário
Compartilhar em outros sites

  • 0
Sobre o componente MultiImage, eu baixei mas não sei com instalar. Teria como me explicar? Uso o Delphi 2007!

Nos Delphis 2006 e 2007 a instalação de componentes é feita por Package...

Você tem que pegar as Units do componente, criar um Package se o mesmo já não existir...

Feito isso você abre o Package com o Delphi, da um BUILD e depois um Install...

Ou então pode adicionar direto a BPL se ela já existir

-------------------------------------------------------------------------------------

se você já tem o .bpl ou você esta com os fontes para serem compilados, de qualquer forma, a primeira é colocar o componente na

Library,

em Tools -> Optinos -> Library - Win32.

*com os fontes:*

abir o arquivo de projeto normalmente no delphi, em File -> Open -> etc...

dai compilar primeiro e depois instalar... tudo isso clicando com o botão direito no mouse

sobre o arquivo que é visualizado no Project Manager.

*arquivo .bpl*

Component -> Install Package, botão Add.. ai é só localizar o componente e

instalá-lo, dai você confere se o checkbox dele está marcado, porque costuma ficar

desmarcado.

------------------------------------------------------------------------------------------------------

http://numisgaia.com/jptsantossilva/?p=3

http://www.codigofonte.net/dicas/delphi/24...ntes-no-delphi-

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,7k
×
×
  • Criar Novo...