Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 4/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
TColor to RGB hk.
#1
Merhabalar,

Bugün fark ettiğim bir acayipliği sizlerle paylaşmak istedim.. Belki birisi buna bir açıklık getirebilir.

Elimde Cardinal bir renk değeri var (Sanırım ColorToRGB() yi aradan çıkarmak istemişler )..
Ben bu Cardinalin RGB değerini almak istiyorum. Aşağıda ki gibi bir kodum var fakat RED ve BLUE bilgileri çapraz olarak geliyor.. 

var
R, G, B : Byte;
FColor : Cardinal;
begin
FColor := dxColorPicker1.Color;

R := GetRValue( FColor );
G := GetGValue( FColor );
B := GetBValue( FColor );

lbRED.Caption   := Format('RED %3s',   [':']) + R.ToString;
lbGREEN.Caption := Format('GREEN %1s', [':']) + G.ToString;
lbBLUE.Caption  := Format('BLUE %2s',  [':']) + B.ToString;

Color2String.Caption := ColorToString(FColor);


Yukarıda ki ne alternatif olarak 

FColor : Integer;
FColor := ColorToRGB(dxColorPicker1.Color);

Bunu da denedim ama sonuç yine hatalı.. 


WinApi.Windows içine baktığımda fonksiyonlar aşağıda ki gibi tanımlanmış.

function GetRValue(rgb: DWORD): Byte;
begin
 Result := Byte(rgb);
end;

function GetGValue(rgb: DWORD): Byte;
begin
 Result := Byte(rgb shr 8);
end;

function GetBValue(rgb: DWORD): Byte;
begin
 Result := Byte(rgb shr 16);
end;


Delphi Sürümü : 10.1 Berlin

Teşekkürler.


AAAA.png
Amatör Küme Bilgisayar Programcısı
WWW
Cevapla
#2
Merhaba,
FColor := $FF123456; değeri ARGB dizilimine sahip.
RGB := TAlphaColorRec.ColorToRGB(DColor); ile RGB dizilimi yerine BGR dizilimini yani $563412 değerine sahip.
Ağlarsa kablosuz ağlar, gerisi yerel ağlar...
Cevapla
#3
(18-11-2016, Saat: 23:29)engerex Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba,
FColor := $FF123456; değeri ARGB dizilimine sahip.
RGB := TAlphaColorRec.ColorToRGB(DColor); ile RGB dizilimi yerine BGR dizilimini yani $563412 değerine sahip.

Red ve Blue yu swap yaptım geçtim Big Grin
Amatör Küme Bilgisayar Programcısı
WWW
Cevapla

Konuyu Paylaş : facebook gplus twitter





Konuyu Okuyanlar: 1 Ziyaretçi