Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Ana resim üzerine faklı iconlar ekleme
#1
Selam,

Main image üzerine  create ederek küçük icon ekleyeceğim. Fakat DrawBitmap(MyBitmap, MyRect, MyRect, 100) kodunda hata alıyorum hata mesajıda gelmiyor. 
bu sorunu nasıl çözerim?

procedure TForm1.Button1Click(Sender: TObject);
var
  MyBitmap: TBitmap;
  MyRect: TRectF;
begin
  MyRect.Create(0, 0, 24, 24);
  MyBitmap.LoadFromFile('D:\Nese\Icon\90620233817.png');
  Image1.Bitmap.Canvas.BeginScene;
  Image1.Bitmap.Canvas.DrawBitmap(MyBitmap, MyRect, MyRect, 100);
  Image1.Bitmap.Canvas.EndScene;
end;
Cevapla
#2
Cevabınız, kendi sorunuzun içinde saklı.

Create etmediğiniz Bitmap için DrawBitmap içinde kullanmaya çalışmışsınız.

Hata mesajı gelmiyor konusunu anlamadım. MyBitmap local bir variable ve bu durumda "Access Violation" alıyor olmalıydınız. Garip...

Aşağıdaki şekilde deneyin...  Idea

procedure TForm1.Button1Click(Sender: TObject);
var
 MyBitmap: TBitmap;
 MyRect: TRectF;
begin
 MyBitmap := TBitmap.Create;
 try
   MyBitmap.LoadFromFile('D:\Nese\Icon\90620233817.png');
   MyRect.Create(0, 0, MyBitmap.Width, MyBitmap.Height);
   Image1.Bitmap.Canvas.BeginScene;
     Image1.Bitmap.Canvas.DrawBitmap(MyBitmap, MyRect, MyRect, 1);
   Image1.Bitmap.Canvas.EndScene;
 finally
   MyBitmap.Free;
 end;
end;
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#3
(19-06-2020, Saat: 21:40)mrmarman Adlı Kullanıcıdan Alıntı: Cevabınız, kendi sorunuzun içinde saklı.

Create etmediğiniz Bitmap için DrawBitmap içinde kullanmaya çalışmışsınız.

Hata mesajı gelmiyor konusunu anlamadım. MyBitmap local bir variable ve bu durumda "Access Violation" alıyor olmalıydınız. Garip...

Aşağıdaki şekilde deneyin...  Idea

procedure TForm1.Button1Click(Sender: TObject);
var
 MyBitmap: TBitmap;
 MyRect: TRectF;
begin
 MyBitmap := TBitmap.Create;
 try
   MyBitmap.LoadFromFile('D:\Nese\Icon\90620233817.png');
   MyRect.Create(0, 0, MyBitmap.Width, MyBitmap.Height);
   Image1.Bitmap.Canvas.BeginScene;
     Image1.Bitmap.Canvas.DrawBitmap(MyBitmap, MyRect, MyRect, 1);
   Image1.Bitmap.Canvas.EndScene;
 finally
   MyBitmap.Free;
 end;
end;

İlk başta hata kodunu göstermedi
Verdiğini kodları ekleyince  E2010 Incompatible types: 'FMX.Graphics.TBitmap' and 'Vcl.Graphics.TBitmap' hatasını aldım.
Usesde FMX.Graphics ekli
Cevapla
#4
Sorunuzu FMX (FireMonkey) altında açtığınız için yazıyorum. 

Projeniz Multidevice ise FMX kodlu veya platform bağımsız unitleri kullanmalısınız.

Projeniz VCL ise o zanan VCL kodlu veya platform bağımsız olan unitleri...

Bitmap'i FMX formda kullanmak için VCL kodlu olan uniti kaldırın.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#5
(20-06-2020, Saat: 09:48)mrmarman Adlı Kullanıcıdan Alıntı: Sorunuzu FMX (FireMonkey) altında açtığınız için yazıyorum. 

Projeniz Multidevice ise FMX kodlu veya platform bağımsız unitleri kullanmalısınız.

Projeniz VCL ise o zanan VCL kodlu veya platform bağımsız olan unitleri...

Bitmap'i FMX formda kullanmak için VCL kodlu olan uniti kaldırın.



Sorunu çözdüm fakat pozisyon konusunda sıkıntı yaşıyorum. Seçtiğim resmi TImagenin istediğim yerinde çıkmasını nasıl sağlarım?
procedure TMainForm.Button1Click(Sender: TObject);
var
  MyBitmap: TBitmap;
  MyRect: TRectF;
  X, Y: Integer;
begin
  X := Integer(Trunc(Image1.Width)) - 150;
  Y := Integer(Trunc(Image1.Height)) - 450;
  MyBitmap := TBitmap.CreateFromFile('D:\Nese\Icon\90620233817.png');
  MyRect := TRectF.Create(X, Y, MyBitmap.Height, MyBitmap.Width);
  Image1.Bitmap.Canvas.BeginScene;
  try
    Image1.Bitmap.Canvas.DrawBitmap(MyBitmap, MyRect, MyRect, 1);
  finally
    Image1.Bitmap.Canvas.EndScene;
    MyBitmap.Free;
  end;
end;
Cevapla
#6
bir tane 
  TargetRect: TRectF;


ekleyin ve 
    TargetRect.Create(X, Y, MyBitmap.Width+X, MyBitmap.Height+Y);


şeklinde yapılandırın.

     Image1.Bitmap.Canvas.DrawBitmap(MyBitmap, MyRect, TargetRect, 1);


şeklinde de kullanın.

Image1'in boyutu bitmap boyutuna göre değişken türden yani standart değilse tavsiyem X ve Y değerlerini Image1 Width / Height referansı ile değil, Offset olarak kullanın.
Yani başlama değerleri 0 kabul edin ve görece 0 konumuna göre  0'dan geri veya ileri için + veya - değerler vererek kullanın.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#7
Çok teşekkür ederim. Sayenizde çok şey öğreniyorum.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Fmx Android - Termal Yazıcı Resim Yazdırma hi_selamlar 8 1.800 17-10-2024, Saat: 18:21
Son Yorum: esistem
  Android Rehbere Kayıt Ekleme barissagir 6 1.760 04-04-2024, Saat: 09:36
Son Yorum: RAD Coder
  IOS SDK Ekleme Esnasında Yavaş Aktarım Sorunu Çözümü Mr.X 0 951 23-11-2023, Saat: 21:18
Son Yorum: Mr.X
Bug Fotoğraf Ekleme ve Düzenleme kajmerantime 5 1.917 29-09-2023, Saat: 11:29
Son Yorum: hi_selamlar
  [Çözüldü] FMX Android uygulaması ile sunucuya resim yükleme Mesut 2 1.253 25-07-2023, Saat: 00:40
Son Yorum: Mesut



Konuyu Okuyanlar: 1 Ziyaretçi