program içinden seçilen png uzantılı dosyayı butona atama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Bay_Y
Üye
Mesajlar: 116
Kayıt: 10 Mar 2014 11:12
Konum: İstanbul

program içinden seçilen png uzantılı dosyayı butona atama

Mesaj gönderen Bay_Y »

Herkese hayırlı günler diliyorum.
Bir sorunum var ve bilgisi olan varsa yardım rica ediyorum.

https://i.hizliresim.com/8dvXD7.jpg

2.Butona bastığoımda bmp uzatntılı resmi yükleyebiliyorum sorun yok ama arkaplanı ile ilgili sıkıntım olduğu için kullanamıyorum
3. resimdeki gibi direk kod kısmında jpg olarak yüklediğimde de sorun yaşamıyorum
ama 1. resimdeki gibi alta butona basarak png uzantılı resim yüklediğimde ekrandaki hata mesajını veriyor

bununla ilgili yardım rica ediyorum.

Bu konuyu Devexpress in kendi forum sitesine de yazmıştım ama çözüm bulamadım.
https://www.devexpress.com/Support/Cent ... m-computer

freeman35: hiyeroglif kullanmıyoruz
ertank
Kıdemli Üye
Mesajlar: 1657
Kayıt: 12 Eyl 2015 12:45

Re: program içinden seçilen png uzantılı dosyayı butona atama

Mesaj gönderen ertank »

Merhaba,

Öncelikle;
- DevExpress üyeliği olmayan kişiler verdiğiniz link içindeki mesajınızı okuyamayacaklardır.
- Ayrıca sitede İngilizce bilmeyen ancak size yardımcı olabilecek arkadaşlar da olabilir. Bu anlamda sorununuzu yeniden yazmanız gerekse de Türkçe olarak foruma sormanızda fayda var.
- Son olarak, sorunuzu resim olarak forum dışındaki bağlantıya yönlendirerek forum içinde arama yapan aynı soruna sahip kişiler doğru sonuca ulaşamayabilirler.

Sorunuzun cevabına gelince, okunan resim dosyasını TBitmap şekline çevirerek resimleri buton üzerinde gösterebilirsiniz. Bildiğiniz üzere BITMAP ve PNG farklı formatlardır. Eğer ileride Jpeg türünde dosyaları da yüklemek isterseniz aşağıdaki kod yine çalışacaktır.

Kod: Tümünü seç

uses
  PngImage,
  Jpeg;

procedure TForm1.SpeedButton1Click(Sender: TObject);
var
  Picture: TPicture;
  Bitmap: TBitmap;
begin
  Picture := TPicture.Create();
  try
    try
      Picture.LoadFromFile('C:\Cop\Kahve.png');
    except
      on E: Exception do
      begin
        MessageDlg('Resim yüklenemiyor. Orjinal hata mesajı:' + E.Message, mtError, [mbOk], 0);
        Exit();
      end;
    end;

    Bitmap := TBitmap.Create();
    try
      Bitmap.Width := Picture.Width;
      Bitmap.Height := Picture.Height;
      Bitmap.Canvas.Draw(0, 0, Picture.Graphic);

      cxButton1.Glyph.Assign(Bitmap);
    finally
      Bitmap.Free();
    end;
  finally
    Picture.Free();
  end;
end;
Bay_Y
Üye
Mesajlar: 116
Kayıt: 10 Mar 2014 11:12
Konum: İstanbul

Re: program içinden seçilen png uzantılı dosyayı butona atama

Mesaj gönderen Bay_Y »

Cevabınız ve zaman ayırdığınız için çok teşekkür ediyorum. Kontrol edip bilgilendirme yapacağım. Ayrıca değerli önerileriniz için de çok teşekkür ediyorum.
Bay_Y
Üye
Mesajlar: 116
Kayıt: 10 Mar 2014 11:12
Konum: İstanbul

Re: program içinden seçilen png uzantılı dosyayı butona atama

Mesaj gönderen Bay_Y »

Dediğiniz gibi sorunsuz çalışıyor fakat bunda da Transparan yapmak ile ilgili sorun var , Resmi bir türlü transparan yapamadım. Yardımcı olabilir misiniz?
ertank
Kıdemli Üye
Mesajlar: 1657
Kayıt: 12 Eyl 2015 12:45

Re: program içinden seçilen png uzantılı dosyayı butona atama

Mesaj gönderen ertank »

Merhaba,

Transparan bir bileşen özelliği değildir. Resimin arkaplan renginin transparan olarak kaydedilmesi ile elde edilen bir özelliktir. Resim arka plan rengi siyah olup transparan olarak keydedilebileceği gibi arka plan rengi beyaz olup transparan kaydetmek mümkündür. Tabi sadece beyaz ve siyah ile limitli değiliz gri veya başka bir renkte olabilir transparan rengimiz.

Bu noktada, sizin yüklemek istediğiniz resimlerin arka plan renkleri sabit olmalı ki siz bu arka plan rengini transparan hale getirip Bitmap'e çevirin.
Arka planı beyaz olan bir PNG resminin beyaz rengini transparan hale getirip kaydeden örneğe aşağıdaki bağlantıdan ulaşılabilir.
https://stackoverflow.com/questions/694 ... ansparency

Bu örnek "Vampyre Imaging Library" için geliştirilmiştir. Ancak mantığı aynı olacaktır.

Benim şahsi önerim ise kullanılacak resimleri bir resim düzenleme uygulaması ile arka planlarını transparan hale getirip uygulama içinde normal bir şekilde kullanmak yönünde olacaktır.
Bay_Y
Üye
Mesajlar: 116
Kayıt: 10 Mar 2014 11:12
Konum: İstanbul

Re: program içinden seçilen png uzantılı dosyayı butona atama

Mesaj gönderen Bay_Y »

Çok teşekkür ederim.
Cevapla