GARANTIR DESCONTO

Fórum Uso do TBitmap Delphi XE8 #525287

09/07/2015

0

Amigos,

Ajuda, por favor...

Alguém poderia me dizer onde esta o erro desse código?


procedure TForm1.Button3Click(Sender: TObject);
Var
B : TBitmap;

begin
B := TBitmap.Create(Width, Height);
Self.ContextHandle(B,Rect(0,0,Width,Height));
B.SaveToFile('image');

end;
V.el

V.el

Responder

Post mais votado

10/07/2015

o que ocorre?

- nao compila
- compila mas faz o que vc espera ( oque vc espera que esse comando faça)

Dorivan Sousa

Dorivan Sousa
Responder

Gostei + 1

Mais Posts

10/07/2015

V.el

Dorivan,

A proposta é fazer um screenshot utilizando o TBitmap. Mas, pesquisando aqui, consegui resolver em parte. O objetivo principal é o seguinte: O evento OnClick de um TButton fará com que o programa faça um screenshot da tela e, em seguida, o evento OnClick do actiontoolbutton compartilharia a imagem capturada da tela. Consegui fazer, só que agora, quando a tela possui muitos TListBoxItem, o Screenshot só é feito do conteúdo distribuído ao longo do display do celular. Está faltando duas coisas agora:

Primeiro: Fazer com que o evento OnClick de um TButton fizesse um screenshot não somente da tela visualizada no display do celular, e sim, de todo conteúdo naquele form que possui dezenas de TListBoxItem.

Segundo: Salvar o Screenshot na galeria de fotos do dispositivo Android e iOS.

Obs: Se eu colocar o comando "image.SaveToFile('image.png');" abaixo de "image11.Bitmap.Assign(image);" o programa compila, compartilha normalmente, mas, no Android, por exemplo, apresenta a mensagem de erro: "java.io.FileNotFoundException: image.png: open failed: EROFS (Read-only file system) ". Quando eu não uso o comando "image.SaveToFile('image.png');", o programa compila normalmente, compartilha normalmente mas não salva a imagem capturada na galeria de fotos do Android.


Segue abaixo o código:

uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.TabControl, FMX.Controls.Presentation, FMX.StdCtrls, System.Actions, FMX.ActnList, FMX.Gestures, FMX.Layouts, FMX.Objects, FMX.Ani, FMX.Colors, FMX.ListBox, FMX.Advertising, FMX.Edit, FMX.ScrollBox, FMX.Memo, FMX.Effects, IniFiles, FMX.Header, FMX.StdActns, FMX.MediaLibrary.Actions;


type
TForm1 = class(TForm)
procedure ActionMakeScreenshotExecute(Sender: TObject);
procedure ShowShareSheetAction1BeforeExecute(Sender: TObject);


procedure TForm1.ActionMakeScreenshotExecute(Sender: TObject);

Var
image : TBitmap;
SourceRect: TRectF;

begin
SourceRect := TRectF.Create(0,0,layout1.Width, layout1.Height);
image := TBitmap.Create (Round (layout1.Width), Round (layout1.Height));
try
if image.Canvas.BeginScene then
try
layout1.PaintTo(image.Canvas, SourceRect);
finally
image.Canvas.EndScene;
end;
image11.Bitmap.Assign(image);
finally
FreeAndNil (image);
end;

end;

procedure TForm1.ShowShareSheetAction1BeforeExecute(Sender: TObject);
begin
ShowShareSheetAction1.Bitmap.Assign(Image11.Bitmap);
end;
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar