Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Insertar imagen en RxRichEdit (https://www.clubdelphi.com/foros/showthread.php?t=3991)

SCH 26-09-2003 19:11:51

Insertar imagen en RxRichEdit
 
Estoy haciendo un pequeño editor con un RxRichEdit, pero no sé como insertar una imagen; si la tengo en el portapapeles sí, claro, pero si el usuario elige un archivo de imagen como puedo cargarlo en el RxRich?

Salu2 a tod@s.

delphi.com.ar 27-09-2003 00:22:11

Hay muchas formas de hacerlo, esta creo que es más que fácil:
Código:

var
  Pic: TPicture;
begin
  if OpenPictureDialog1.Execute Then
  begin
    Pic := TPicture.Create;
    try
      Pic.LoadFromFile(OpenPictureDialog1.FileName);
      Clipboard.Assign(Pic);
      RxRichEdit1.PasteFromClipboard;
    finally
      Pic.Free;
    end;
  end;

Saludos!

SCH 27-09-2003 12:30:25

Gracias, lo acabo de probar y va bastante bien, el único problema es cuando quiero insertar un gif con transparencias, que la transparencia "se la salta" y pone un fondo de imagen negro ¿alguna idea?

Un saludo

delphi.com.ar 29-09-2003 16:02:43

Desconozco si el RTF y el RichEdit soportan imágenes transparentes.

Saludos!

SCH 29-09-2003 22:17:58

Creo que sí porque cuando lo pego con Control+V sí coge bien las transparencias.

Salu2

delphi.com.ar 29-09-2003 22:40:14

Probé usar el TGIFImage de las RxLibs, pero también falla porque lo copia al portapapeles como si cada frame del Gif fuera un Bitmap:
Código:

Frames[0].Bitmap.SaveToClipboardFormat(AFormat, AData, APalette);
Habría que investigar como pasarle un GIF al clipboard. Este es el código que hice, por si te interesa:
Código:

uses
  RxGIF, Clipbrd;

procedure TForm1.Button1Click(Sender: TObject);
var
  GIF: TGIFImage;
  MyFormat : Word;
  AData    : THandle;
  APalette : HPALETTE;
begin
  if OpenPictureDialog1.Execute Then
  begin
    GIF := TGIFImage.Create;
    try
      GIF.LoadFromFile(OpenPictureDialog1.FileName);
      GIF.SaveToClipBoardFormat(MyFormat, AData, APalette);
      ClipBoard.SetAsHandle(MyFormat, AData);
      RxRichEdit1.PasteFromClipboard;
    finally
      GIF.Free;
    end;
  end;
end;

Saludos!


La franja horaria es GMT +2. Ahora son las 23:07:57.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi