<?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[Mit Assembler Funktion in ein Image Schreiben]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte mit einer Assembler Funktion in ein Image schreiben.</p>
<p>Geht so was und wenn ja wie komme ich an die Speicher Adresse.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/135703/mit-assembler-funktion-in-ein-image-schreiben</link><generator>RSS for Node</generator><lastBuildDate>Sat, 01 Aug 2026 15:44:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/135703.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 04 Feb 2006 11:58:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Mit Assembler Funktion in ein Image Schreiben on Sat, 04 Feb 2006 11:58:54 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte mit einer Assembler Funktion in ein Image schreiben.</p>
<p>Geht so was und wenn ja wie komme ich an die Speicher Adresse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/985570</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/985570</guid><dc:creator><![CDATA[hermes]]></dc:creator><pubDate>Sat, 04 Feb 2006 11:58:54 GMT</pubDate></item><item><title><![CDATA[Reply to Mit Assembler Funktion in ein Image Schreiben on Sat, 04 Feb 2006 12:27:26 GMT]]></title><description><![CDATA[<p>über die Eigenschaften HBitmap oder Scanlines</p>
]]></description><link>https://www.c-plusplus.net/forum/post/985588</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/985588</guid><dc:creator><![CDATA[Christian211]]></dc:creator><pubDate>Sat, 04 Feb 2006 12:27:26 GMT</pubDate></item><item><title><![CDATA[Reply to Mit Assembler Funktion in ein Image Schreiben on Sat, 04 Feb 2006 13:34:49 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>aus der Borlandhilfe,</p>
<blockquote>
<p>void __fastcall TForm1::Button1Click(TObject *Sender)</p>
<p>{<br />
Graphics::TBitmap *pBitmap = new Graphics::TBitmap();<br />
// Dieses Beispiel zeigt das direkte Zeichnen in das Bitmap<br />
Byte *ptr;<br />
try<br />
{<br />
pBitmap-&gt;LoadFromFile(&quot;C:\\Program Files\\Common Files\\Borland Shared\\Images\\Splash\\256color\\factory.bmp &quot;);<br />
for (int y = 0; y &lt; pBitmap-&gt;Height; y++)<br />
{<br />
ptr = (Byte *)pBitmap-&gt;ScanLine[y];<br />
for (int x = 0; x &lt; pBitmap-&gt;Width; x++)</p>
<p><div class="plugin-markdown"><input type="checkbox" id="checkbox7916" checked="true" /><label for="checkbox7916">= (Byte)y;</label></div><br />
}<br />
Canvas-&gt;Draw(0,0,pBitmap);<br />
}<br />
catch (...)<br />
{<br />
ShowMessage(&quot;Bitmap konnte nicht geladen oder geändert werden!&quot;);<br />
}<br />
delete pBitmap;<br />
}</p>
</blockquote>
<p>Es wir ein Datentyp Byte *ptr instanziert, dann wird die Zeilen Adresse<br />
über den Index y ermittelt und in den Pointer gelesen.</p>
<p>Was soll dann aber das?<br />
Hier ist ptr plötzlich ein Array.</p>
<pre><code class="language-cpp">for (int x = 0; x &lt; pBitmap-&gt;Width; x++)

        ptr[x] = (Byte)y;
</code></pre>
<p>Ich kann doch einfach die Adresse der ersten Zeile, Bitmap Height sowie Width<br />
meiner Assembler Funktion übergeben und einfach in den Speicherbereich schreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/985648</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/985648</guid><dc:creator><![CDATA[hermes]]></dc:creator><pubDate>Sat, 04 Feb 2006 13:34:49 GMT</pubDate></item><item><title><![CDATA[Reply to Mit Assembler Funktion in ein Image Schreiben on Sat, 04 Feb 2006 13:51:22 GMT]]></title><description><![CDATA[<p>Gbit ne' Menge Artikel die den Zusammenhang Zeiger / Array erläutern. Wie findet man die nochmal. Hmmm irgendwie mit toggle, Frogger oder so ähnlich</p>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/985658</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/985658</guid><dc:creator><![CDATA[Christian211]]></dc:creator><pubDate>Sat, 04 Feb 2006 13:51:22 GMT</pubDate></item><item><title><![CDATA[Reply to Mit Assembler Funktion in ein Image Schreiben on Sat, 04 Feb 2006 14:12:48 GMT]]></title><description><![CDATA[<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> Google.....</p>
<p>Ist schon klar, der Pointer zeigt auf eine Speicheradresse beschreibe ich nun<br />
den Speicher über den Ptr[1] wird die Ptr Adresse Ptr+1 beschrieben.(oder)</p>
<p>Habe mal folgendes probiert,</p>
<pre><code class="language-cpp">int *Ptr;
  int Color;
	pBitmap-&gt;Canvas-&gt;Pixels[0][0] = 0x00909090;
	Ptr = (int*)pBitmap-&gt;ScanLine[0];
	Color = *Ptr;
     *Ptr = 0;
     Image1-&gt;Canvas-&gt;Draw(0,0,pBitmap);
</code></pre>
<p>Ich lese den korrekten Wert(0x00909090) über den Pointer nach Color zurück.<br />
Nur funktioniert das schreiben über den Pointer nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/985693</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/985693</guid><dc:creator><![CDATA[hermes]]></dc:creator><pubDate>Sat, 04 Feb 2006 14:12:48 GMT</pubDate></item><item><title><![CDATA[Reply to Mit Assembler Funktion in ein Image Schreiben on Sat, 04 Feb 2006 14:52:04 GMT]]></title><description><![CDATA[<p>Verstehe das nicht so ganz:</p>
<p>Wo ist Assembler?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/985742</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/985742</guid><dc:creator><![CDATA[Christian211]]></dc:creator><pubDate>Sat, 04 Feb 2006 14:52:04 GMT</pubDate></item><item><title><![CDATA[Reply to Mit Assembler Funktion in ein Image Schreiben on Sat, 04 Feb 2006 15:14:32 GMT]]></title><description><![CDATA[<p>Wie gesagt, ich kann das ganze lesen aber die Farbe nicht schreiben.</p>
<pre><code class="language-cpp">void __fastcall TForm1::Button1Click(TObject *Sender)
{
	pBitmap-&gt;Canvas-&gt;Pixels[0][0] = 0x00e0e0e0;
	Ptr = (int*)pBitmap-&gt;ScanLine[0];
	cColor = GetColor(Ptr); //Hier kommt die mit Pixels geschriebene Farbe          
                                //zurück 0x00e0e0e0;
     WriteColor(Ptr,0); // Farbe an Zeile 0 Spalte 0 auf schwarz ändern
                        // funkt nicht
     Image1-&gt;Canvas-&gt;Draw(0,0,pBitmap);
}
//---------------------------------------------------------------------------
int TForm1::GetColor(int *Ptr)
{
	int *Ptr_ = Ptr;
	int Color;
	asm
     {
     	//Entspricht Color = *Ptr
		mov esi,Ptr_;
          lodsd;
          mov Color,eax;
     }
     return Color;
}
//---------------------------------------------------------------------------
void TForm1::WriteColor(int *Ptr,int Color)
{
	int *Ptr_ = Ptr;
	int Color_ = Color;
	asm
     {
          //Entspricht *Ptr = Color
		mov edi,Ptr_;
          mov eax,Color_;
          stosd;
     }
     return;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/985766</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/985766</guid><dc:creator><![CDATA[hermes]]></dc:creator><pubDate>Sat, 04 Feb 2006 15:14:32 GMT</pubDate></item><item><title><![CDATA[Reply to Mit Assembler Funktion in ein Image Schreiben on Sat, 04 Feb 2006 19:13:53 GMT]]></title><description><![CDATA[<p>Mache ich da irgendwas falsch, jemand ne Idee?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/986009</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/986009</guid><dc:creator><![CDATA[hermes]]></dc:creator><pubDate>Sat, 04 Feb 2006 19:13:53 GMT</pubDate></item><item><title><![CDATA[Reply to Mit Assembler Funktion in ein Image Schreiben on Mon, 06 Feb 2006 07:41:58 GMT]]></title><description><![CDATA[<p>also bei mir funktioniert das!</p>
<pre><code class="language-cpp">int *Ptr;
int  Color;

Image1-&gt;Picture-&gt;Bitmap-&gt;Canvas-&gt;Pixels[0][0] = 0x00909090;

Ptr = (int*) Image1-&gt;Picture-&gt;Bitmap-&gt;ScanLine[0];

// Wert auslesen
Color = *Ptr;

// auf 0 setzen
*Ptr  = 0;

// nochmal auslesen -&gt; ist 0
Color = *Ptr;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/987074</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/987074</guid><dc:creator><![CDATA[Sunday]]></dc:creator><pubDate>Mon, 06 Feb 2006 07:41:58 GMT</pubDate></item><item><title><![CDATA[Reply to Mit Assembler Funktion in ein Image Schreiben on Mon, 06 Feb 2006 21:23:43 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<pre><code class="language-cpp">void __fastcall TForm1::Button1Click(TObject *Sender)
{
	int *Ptr;
	int cColor;
	pBitmap-&gt;Canvas-&gt;Pixels[0][0] = clGray;
	Ptr = (int*)pBitmap-&gt;ScanLine[0];
	cColor = *Ptr;    //Farbe für Grau gelesen
	*Ptr   = 0;       //Farbe Schwarz schreiben
     cColor = *Ptr;       //Lese 0 zurück
     Image1-&gt;Canvas-&gt;Draw(0,0,pBitmap); //Die Pixelfarbe ist immer noch Grau
}
</code></pre>
<p>Ich lese nach dem 0 schreiben auch wieder 0 zurück, doch die Pixelfarbe<br />
nach dem Draw bleibt Grau.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/988112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/988112</guid><dc:creator><![CDATA[hermes]]></dc:creator><pubDate>Mon, 06 Feb 2006 21:23:43 GMT</pubDate></item><item><title><![CDATA[Reply to Mit Assembler Funktion in ein Image Schreiben on Tue, 07 Feb 2006 09:02:13 GMT]]></title><description><![CDATA[<p>auf was ist denn <em>CopyMode</em> gesetzt?</p>
<p>BCB-Hilfe TCanvas::Draw schrieb:</p>
<blockquote>
<p>Wenn die Grafik ein TBitmap-Objekt ist, wird das Bitmap mit dem Wert von CoypMode gezeichnet.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/988250</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/988250</guid><dc:creator><![CDATA[Sunday]]></dc:creator><pubDate>Tue, 07 Feb 2006 09:02:13 GMT</pubDate></item><item><title><![CDATA[Reply to Mit Assembler Funktion in ein Image Schreiben on Tue, 07 Feb 2006 12:39:03 GMT]]></title><description><![CDATA[<p>CopyMode ist auf default gesetzt.</p>
<p>Kann ich mir nicht gleich die Speicher Adresse des Image<br />
besorgen und direkt in das Image schreiben, spart die Funktion<br />
Draw.</p>
<p>Nur wie kommt man an die Image Speicher Adresse?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/988427</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/988427</guid><dc:creator><![CDATA[hermes]]></dc:creator><pubDate>Tue, 07 Feb 2006 12:39:03 GMT</pubDate></item><item><title><![CDATA[Reply to Mit Assembler Funktion in ein Image Schreiben on Tue, 07 Feb 2006 12:50:29 GMT]]></title><description><![CDATA[<p>wenn du das Bitmap im TImage änderst, kannste dir das Draw sparen und im TImage wird auch die geänderte Farbe angezeigt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/988444</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/988444</guid><dc:creator><![CDATA[Sunday]]></dc:creator><pubDate>Tue, 07 Feb 2006 12:50:29 GMT</pubDate></item><item><title><![CDATA[Reply to Mit Assembler Funktion in ein Image Schreiben on Tue, 07 Feb 2006 13:02:56 GMT]]></title><description><![CDATA[<p>ein kleines Beispiel (im TImage befindet sich ein geladenes Bild):</p>
<pre><code class="language-cpp">void __fastcall TForm1::Button1Click(TObject *Sender)
{
  int        ImageHeight = Image1-&gt;Picture-&gt;Bitmap-&gt;Height;
  int        ImageWidth  = Image1-&gt;Picture-&gt;Bitmap-&gt;Width;
  RGBTRIPLE *ScanLine;

  for (int y = 0; y &lt; ImageHeight; ++y)
  {
    // Zeiger auf den Anfang einer Bildzeile setzen
    ScanLine = (RGBTRIPLE*) Image1-&gt;Picture-&gt;Bitmap-&gt;ScanLine[y];

    for (int x = 0; x &lt; ImageWidth; ++x)
    {
      // RGB-Farbwert in Grau (nach Intensität) konvertieren
      unsigned char GrayColor = (ScanLine-&gt;rgbtRed + ScanLine-&gt;rgbtGreen + ScanLine-&gt;rgbtBlue) / 3;

      // Grauwert zu weisen
      ScanLine-&gt;rgbtRed   = GrayColor;
      ScanLine-&gt;rgbtGreen = GrayColor;
      ScanLine-&gt;rgbtBlue  = GrayColor;

      // Zeiger auf nächstes RGB-Triple setzen
      ++ScanLine;
    }
  }

  // Anzeige des Bildes erneuern
  Image1-&gt;Invalidate();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/988458</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/988458</guid><dc:creator><![CDATA[Sunday]]></dc:creator><pubDate>Tue, 07 Feb 2006 13:02:56 GMT</pubDate></item><item><title><![CDATA[Reply to Mit Assembler Funktion in ein Image Schreiben on Tue, 07 Feb 2006 13:12:38 GMT]]></title><description><![CDATA[<p>Wie komme ich aber an die Speicher Adresse des Image.<br />
Soetwas wie ScanLine gibt es nicht.</p>
<p>Oder wie meist du das.</p>
<p>Sorry letzten Beitrag von dir noch nicht gesehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/988469</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/988469</guid><dc:creator><![CDATA[hermes]]></dc:creator><pubDate>Tue, 07 Feb 2006 13:12:38 GMT</pubDate></item></channel></rss>