Size gönderdiğim örnekte
Kod: Tümünü seç
Image1.Picture.Bitmap.PixelFormat := pf8Bit;
Şunu unutmadan ekleyim, scanline ile daha alt seviyede resim özelliklerine ulaşırsınız. İki tane ok görmenizin sebebi, 16 veya 32 bitlik derinlikte işlem yaptığınızı gösteriyor. Projenizde bu derinliği pf8Bit ile sınırlayın. Daha fazlasına ihtiyacınızın olup olmadığını resminizin renk çeşitliliğine bakarak değerlendiriniz.
Kodunuza daha önce belirttiğim satırı eklerken hata yapmış olmalısınız. Bir satır daha ekledim. Bu da size tanımlanmamış bir renkle karşılaşırsanız onu da ekleyecek şekilde size kodunu döndüren bir mesaj penceresi.
Kod: Tümünü seç
if RenkKodu = '.' then showmessagefmt('%x', [Okunan[j]]);
Kod: Tümünü seç
procedure TForm1.BitBtn3Click(Sender: TObject);
Var
Okunan : pByteArray;
i, j : Integer;
RenkKodu : Char;
Satir : String;
begin
i := 0;
j := 0;
Memo2.Lines.Clear;
Application.ProcessMessages;
while i < 32 do begin
Okunan := pByteArray( Image1.Picture.Bitmap.Scanline[i] );
Satir := '';
while j < 32 do begin
RenkKodu := '.';
case Okunan[j] of
$F9 : RenkKodu := 'R';
$FB : RenkKodu := 'Y';
$00 : RenkKodu := 'B';
$FA : RenkKodu := 'G';
end;
if RenkKodu = '.' then showmessagefmt('%x', [Okunan[j]]);
Satir := Satir + RenkKodu;
inc(j);
end;
Memo2.Lines.Add(Satir);
j := 0;
inc(i);
end;
end;