<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[RGB-Werte bei einem 24&#x2F;32 bit Bitmap]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich hab eine Frage zu den Farben in einem Bitmap.<br />
Bei einer Bittiefe von 16 bit werden die farben richtig dargestellt.<br />
Ich gehe dabei folgendermaßen vor:</p>
<pre><code class="language-cpp">//Hier lasse ich mir die Adresse des Pixels zurück geben und weise sie c zu
COLORREF c = (COLORREF)*(WORD*)m_imImage.GetPixelAddress(x, y+m_kDeltaY);
//und später möchte ich den wert in result schreiben
COLORREF result = ((c&amp;0x7c00) &lt;&lt; 9 | (c&amp;0x3e0) &lt;&lt; 6 | (c&amp;0x1f) &lt;&lt; 3);
</code></pre>
<p>um die einzelnen farbwerte auszulesen mache ich folgendes:<br />
crColor ist dabei eine Variable vom Typ COLORREF</p>
<pre><code class="language-cpp">//Die funktionen GetRValue()... funktionieren nicht
int red = crColor 0x0000ff;
int green =  crColor &gt;&gt; 8 &amp; 0x0000ff ;
int blue = crColor &gt;&gt; 16 &amp; 0x0000ff;
</code></pre>
<p>Das klappt alles.<br />
Nun zu meiner Frage wenn ich letzteres für 24 und 32 bittiefe mache, muss ich doch eigendlich nur um jeweils 8 oder 16 bit weiter shiften. Oder?<br />
Und das erste funktioniert gar nicht für 24 und 32 bit. Dabei wird<br />
zum Beispiel die farbe RGB(255,255,255) als Blau dargestellt (sollte doch<br />
aber weiß sein).</p>
<p>Kann mir vielleicht jemand sagen wie die farbwerte in einem 24/32 Bit Bitmap gespeichert sind?<br />
Und wie ich die farben richtig auslese, bzw. richtig in eine COLORREF-Variable schreibe?</p>
<p>Danke schonmal.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/47048/rgb-werte-bei-einem-24-32-bit-bitmap</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Apr 2026 07:56:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/47048.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 26 Aug 2003 06:17:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to RGB-Werte bei einem 24&#x2F;32 bit Bitmap on Tue, 26 Aug 2003 06:17:43 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich hab eine Frage zu den Farben in einem Bitmap.<br />
Bei einer Bittiefe von 16 bit werden die farben richtig dargestellt.<br />
Ich gehe dabei folgendermaßen vor:</p>
<pre><code class="language-cpp">//Hier lasse ich mir die Adresse des Pixels zurück geben und weise sie c zu
COLORREF c = (COLORREF)*(WORD*)m_imImage.GetPixelAddress(x, y+m_kDeltaY);
//und später möchte ich den wert in result schreiben
COLORREF result = ((c&amp;0x7c00) &lt;&lt; 9 | (c&amp;0x3e0) &lt;&lt; 6 | (c&amp;0x1f) &lt;&lt; 3);
</code></pre>
<p>um die einzelnen farbwerte auszulesen mache ich folgendes:<br />
crColor ist dabei eine Variable vom Typ COLORREF</p>
<pre><code class="language-cpp">//Die funktionen GetRValue()... funktionieren nicht
int red = crColor 0x0000ff;
int green =  crColor &gt;&gt; 8 &amp; 0x0000ff ;
int blue = crColor &gt;&gt; 16 &amp; 0x0000ff;
</code></pre>
<p>Das klappt alles.<br />
Nun zu meiner Frage wenn ich letzteres für 24 und 32 bittiefe mache, muss ich doch eigendlich nur um jeweils 8 oder 16 bit weiter shiften. Oder?<br />
Und das erste funktioniert gar nicht für 24 und 32 bit. Dabei wird<br />
zum Beispiel die farbe RGB(255,255,255) als Blau dargestellt (sollte doch<br />
aber weiß sein).</p>
<p>Kann mir vielleicht jemand sagen wie die farbwerte in einem 24/32 Bit Bitmap gespeichert sind?<br />
Und wie ich die farben richtig auslese, bzw. richtig in eine COLORREF-Variable schreibe?</p>
<p>Danke schonmal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/340507</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/340507</guid><dc:creator><![CDATA[begbie++]]></dc:creator><pubDate>Tue, 26 Aug 2003 06:17:43 GMT</pubDate></item></channel></rss>