Kopyalama hatası

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
sadimba
Üye
Mesajlar: 14
Kayıt: 25 Tem 2017 12:36

Kopyalama hatası

Mesaj gönderen sadimba »

Değerli, arkadaşlar
Delphi 7 kullanıyorum ve sorunum, iki adet bitmap resimi birleştirip tek bitmap dosyası olarak kaydetmek. Ama yapamadım. Yaptığım uygulama şu şekilde:

procedure TForm1.Button1Click(Sender: TObject); //Button1 ile 1000x1000px boyutlu bmp resimini Image2'ye yüklüyorum.
begin
if OpenpictureDialog1.Execute then
begin
Image2.Picture.LoadFromFile(OpenpictureDialog1.FileName);
end;
end;

procedure TForm1.Button2Click(Sender: TObject); // Button2 ile dairesel şekil verdiğim (100x100 px) resimi, büyük resim üzerine kopyalıyorum.
var myBmp : TBitmap;
begin
if OpenpictureDialog1.Execute then
begin
Image3.Picture.LoadFromFile(OpenpictureDialog1.FileName); //Küçük boyutlu 100x100px resimi yüklüyorum
Image2.Left:=10; Image2.Top:=10;
myBmp := TBitmap.create;
if assigned( myBmp) then with myBmp do
try
Image3.width := 100;
Image3.height := 100;
canvas.brush.color := clMenu;
transparent := true;
width := Image3.picture.width;
height := Image3.picture.height;
canvas.brush.color := clBlack;
canvas.pen.color := clBlack;
canvas.ellipse(0,0, 100,100);
Image3.stretch:=true;
transparentColor := clBlack;
Image3.picture.bitmap.canvas.draw(0,0, myBmp);
Image3.Transparent:=true;
finally
myBmp.free;
end;
end;
end;

Şimdi sorun burada başlıyor. Image2'deki bu resimi Image1'e nasıl gönderebilirim ve image 1'i nasıl bitmap olarak kaydedebilirim.
Image1.picture := Image2.picture //Image2'deki resimi kopyalamadan Image1'e gönderiyor.
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: Kopyalama hatası

Mesaj gönderen ertank »

Merhaba,
Benim kod örneğinden anladığım siz üst üste bindirilmiş resmi Image3 içinde hazırlıyorsunuz.
Image1 içine Image3 içindeki resmi kopyalamanız gerekli, diye anlıyorum.

Ek olarak kod ile ilgili olarak aşağıdaki satır gereksiz.

Kod: Tümünü seç

if assigned(myBmp) then
Bir önceki satırda TBitmap.Create hata alırsa zaten sonraki kodlar çalışmaz. İşleyiş orada durur.
sadimba
Üye
Mesajlar: 14
Kayıt: 25 Tem 2017 12:36

Re: Kopyalama hatası

Mesaj gönderen sadimba »

Değerli arkadaşım. İlgilendiğiniz için çok teşekkür ederim.
Evet siz doğru anlıyorsunuz. Yani iki farklı resimi birbiri üzerine bindirmek ve sonra bir klasöre kaydetmek istiyorum.
Button2 ile bu uygulamayı yapıyorum. Lakin klasöre kopyalama olmuyor.
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: Kopyalama hatası

Mesaj gönderen ertank »

Siz Image2 içine yüklediğiniz resmi hiç kullanmıyorsunuz.
Image1 içinde resim varsa kodlarda bu bilinmiyor. O da hiç kullanılmıyor.
Sadece Image3'ü transparan olarak myBmp içine yazıyorsunuz. Onuda tekrar Image3 içine geri kaydediyorsunuz.
sadimba
Üye
Mesajlar: 14
Kayıt: 25 Tem 2017 12:36

Re: Kopyalama hatası

Mesaj gönderen sadimba »

Değerli arkadaşım; kodları yazarken hata yapmış olabilirim. Yapmak istediğim şey iki bitmap'dan birini diğerinin üzerine transparent olarak yapıştırmak ve sonrada bir klasöre kaydetmek. Yapamadık.
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: Kopyalama hatası

Mesaj gönderen ertank »

Aşağıdaki şekilde deneyebilir misiniz?
Resimler 100x100 dediğiniz için ayrıca boyutlandırma yok örnek kod içinde.

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
  LBmp1 : TBitmap;
  LBmp2: TBitmap;
begin
  LBmp1 := nil;
  LBmp2 := nil;
  try
    LBmp1 := TBitmap.Create;
    LBmp1.LoadFromFile('C:\Users\User\Downloads\R1.bmp');
    LBmp1.Transparent := True;
    LBmp1.TransparentMode := tmAuto;

    LBmp2 := TBitmap.Create;
    LBmp2.LoadFromFile('C:\Users\User\Downloads\R2.bmp');
    LBmp2.Transparent := True;
    LBmp2.TransparentMode := tmAuto;
    LBmp2.Canvas.Draw(0, 0, LBmp1);
    LBmp2.SaveToFile('C:\Users\User\Downloads\r_transparan.bmp');

    Image1.Picture.Bitmap.LoadFromFile('C:\Users\User\Downloads\r_transparan.bmp');
  finally
    LBmp1.Free();
    LBmp2.Free();
  end;
end;
sadimba
Üye
Mesajlar: 14
Kayıt: 25 Tem 2017 12:36

Re: Kopyalama hatası

Mesaj gönderen sadimba »

Değerli arkadaşım. Kod çok güzel çalışıyor. Eline ve emeğine sağlık. Delphi'nin hangi sürümünü kullanıyorsunuz. Zira 7'den artık kurtulmak istiyorum. Aydınlatıcı bilgiler için tekrar çok teşekkür ederim.
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: Kopyalama hatası

Mesaj gönderen ertank »

Ben en son sürümünü 12.2 kullanıyorum.
sadimba
Üye
Mesajlar: 14
Kayıt: 25 Tem 2017 12:36

Re: Kopyalama hatası

Mesaj gönderen sadimba »

Değerli arkadaşım. Verdiğin bilgiler için çok teşekkür ederim.
Kod güzel çalışıyor. Ben uygulamada sıkıntı yaşadım. '2.ci resim aynı boyutta ve saydam olarak kopyalanır ise sorun yok.
Ama boyutu büyültür yada küçültürsem saydamlık özelliği kayboluyor. Bunu nasıl düzeltebilirim. Yardımcı olursanız çok memnun olurum. Teşekkürler
Cevapla