(06-10-2023, Saat: 06:06)emozgun Adlı Kullanıcıdan Alıntı: @kajmerantime resimleri kendi uygulaman ile düzenlemek istiyorsan önce bitmap olarak açman lazım. Delphi ile Android 11 SDK 30 Kapsamlı Depolama Scoped Storage : SAF & MediaStore API konusundaki bit eşlem / bitmap kod parçacığı, Bitmap URI'si verilen bir dosyanın nasıl açılacağını gösteriyor, ekindeki veya github'daki örnek proje ile ImageControl1'a aldıktan sonra düzenleme yapabilirsin
Hocam galeride açmak yerine uygulamanın kendi içinde düzenlemek için şöyle bir kod yazdım. Windowsta çalıştırdığım zaman çizim yapabiliyorum istediğim şekilde. Fakat Android cihazda çalıştırdığımda çizim yapmaya başladığım gibi fotoğraf gidiyor. Image kayboluyor bir anda. Destek aldım bir çok şey denedim fakat düzelmedi. Birde çizim işlemini yaptıktan sonra çizim görünüyor. Parmağımla senkronize olmuyor. İlginiz için tekrardan teşekkürler.
unit Unit1;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls, FMX.Objects,
FMX.Gestures;
type
TForm1 = class(TForm)
imgDrawing: TImage;
PaintBox1: TPaintBox;
GestureManager1: TGestureManager;
// procedure imgDrawingGesture(Sender: TObject; const EventInfo: TGestureEventInfo; var Handled: Boolean);
procedure FormCreate(Sender: TObject);
procedure PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Single);
procedure PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Single);
procedure PaintBox1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Single);
procedure PaintBox1Gesture(Sender: TObject;
const EventInfo: TGestureEventInfo; var Handled: Boolean);
private
{ Private declarations }
IsDrawing: Boolean;
LastX, LastY: Single;
Bitmap: TBitmap;
Canvas: TCanvas;
Drawing: Boolean;
FStartPoint: TPointF;
DrawingBitmap: TBitmap;
public
{ Public declarations }
end;
var
Form1: TForm1;
Drawing : Boolean;
implementation
{$R *.fmx}
procedure TForm1.FormCreate(Sender: TObject);
begin
Drawing := False;
LastX := 0;
LastY := 0;
Bitmap := TBitmap.Create;
Bitmap.SetSize(Round(imgDrawing.Width), Round(imgDrawing.Height));
Bitmap.Clear(TAlphaColorRec.Null);
end;
procedure TForm1.PaintBox1Gesture(Sender: TObject;
const EventInfo: TGestureEventInfo; var Handled: Boolean);
begin
if EventInfo.GestureID = igiPan then
begin
imgDrawing.Visible := True;
if EventInfo.Flags = [TInteractiveGestureFlag.gfBegin] then
begin
imgDrawing.Visible := True;
// Pan hareketi başladığında çizim işlemini başlatın
PaintBox1.Canvas.BeginScene;
PaintBox1.Canvas.Stroke.Color := TAlphaColorRec.Yellow;
PaintBox1.Canvas.Stroke.Thickness := 10;
end
else if EventInfo.Flags = [TInteractiveGestureFlag.gfEnd] then
begin
imgDrawing.Visible := True;
// Pan hareketi bittiğinde çizim işlemini sonlandırın
PaintBox1.Canvas.EndScene;
end
else
begin
imgDrawing.Visible := True;
// Pan hareketi devam ederken çizim yapın
PaintBox1.Canvas.DrawLine(EventInfo.Location, EventInfo.Location, 1);
end;
Handled := True;
end;
end;
procedure TForm1.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Single);
begin
Drawing := True;
LastX := X;
LastY := Y;
end;
procedure TForm1.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Single);
begin
if Drawing then
begin
imgDrawing.Canvas.BeginScene;
try
PaintBox1.Canvas.Stroke.Color := TAlphaColorRec.Yellow;
PaintBox1.Canvas.Stroke.Thickness := 10;
PaintBox1.Canvas.DrawLine(TPointF.Create(LastX, LastY), TPointF.Create(X, Y), 1);
finally
imgDrawing.Canvas.EndScene;
end;
LastX := X;
LastY := Y;
end;
end;
procedure TForm1.PaintBox1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Single);
begin
Drawing := False;
end;
end.