teil eines TBitmap in ein anderes TBitmap kopieren
-
hallo
hab eine einfache frage
(Borland c++ Builder 6 win xp sp 2)ich will ein teil eines bitmaps in einen anderen bitmap speichern
also ich habe ein walkcykle und will nun ein bestimmtes bild ausschneiden damit ich das anzeigen kannfor(i = 0; i <= EinBilderGroesse; i++) { for(j = 0; j <= EinBilderGroesse; j++) { PixelFarbe = WalkeCykleBitmap->Canvas->Pixels[i+BilderAnfangX][j+BilderAnfangY]; AktuellesBitmap->Canvas->Pixels[i][j] = PixelFarbe; } //kopiert das bild was gebraucht wird aus dem walkcykle } EinPfad = Pfad + "\\" + "neu.bmp"; AktuellesBitmap->SaveToFile(EinPfad);ich bekomme keine fehlermeldung, und es fkt auch
nur wenn ich aktuellesBitmap speichere bekomme ich ein leeres bmp
also fkt der kopiervorgang nicht.
wenn ich pixelfarbe mit einer festen farbe clRed ersetze müsste eigendlich das ganze bitmap rot werden, das fkt auch nichtkönnt ihr mir bitte helfen,
kennt ihr eine schnellere kopiermethode
oder habt bessere vorschläge für die lösung des problems?danke
flo
-
Dieser Thread wurde von Moderator/in CStoll aus dem Forum C++ in das Forum VCL/CLX (Borland C++ Builder) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Hallo,
Zum Kopieren eines Bitmapteiles gibt es doch TCanvas::CopyRect.
-
hmm
ok danke
AktuellesBitmap->Canvas->CopyRect(ARect, WalkeCykleBitmap, BRect);nur damit ich das richtig verstehe
ARect = ist die größe des Bildes, also von AktuellesBitmap, oder das wo es hinkopiert werden soll
BRect = ist die fläche die wir kopieren wollen
in die mitte müss doch das bild von dem wir kopieren wollen, nur ist soll das ein TCanvas sein, was ist das?
WalkeCykleBitmap ist ein TBitmapdanke
flo
-
ARect - ist das Zielrechteck (bei dir in AktuellesBitmap)
BRect - ist das Quellrechteck (aus WalkeCykleBitmap)
Du mußt das Canvas angeben aus dem du kopieren willst, also soAktuellesBitmap->Canvas->CopyRect(ARect, WalkeCykleBitmap->Canvas, BRect);Das steht aber auch alles in der Hilfe (mit Beispiel).
-
Schau doch mal in die Hilfe zu CopyRect, da ist auch ein Beispiel.
-
danke
ich hab in der hilfe nachgeschaut, leider ist die bei mir jetzt auf engl.
und das mit dem canvas war mir nicht klar
kann man die hilfe auf deutsch updaten?hab da immer noch ein problem
er zeigt leider nix an, in dem gespeicherten bild.
wenn ich walkcyklebitmap speichere, dann fkt es.int i, j, BilderAnfangX, BilderAnfangY; AnsiString EinPfad; TColor PixelFarbe; TRect ARect, BRect; ARect.left = 0; ARect.top = 0; ARect.right = EinBilderGroesse; ARect.bottom = EinBilderGroesse; BilderAnfangX = EinBilderGroesse * (EinBildPosX - 1); BilderAnfangY = EinBilderGroesse * (EinBildPosY - 1); BRect.left = BilderAnfangX; BRect.top = BilderAnfangY; BRect.right = BilderAnfangX + EinBilderGroesse; BRect.bottom = BilderAnfangY + EinBilderGroesse; AktuellesBitmap->Canvas->CopyRect(ARect, WalkeCykleBitmap->Canvas, BRect); EinPfad = Pfad + "\\" + "neu.bmp"; AktuellesBitmap->SaveToFile(EinPfad);bei google habe ich das gefunden
if (x + 10 <= 724) { x +=10; TRect Ziel = Rect(0, 0, 300, 300); TRect Ausgang = Rect(x, y, x + 300, y + 300); Canvas->CopyRect(Ziel, Bitmap->Canvas, Ausgang); }http://entwickler-forum.de/archive/index.php/t-4003.html
wo kopiert er das bild hin?
wäre für eure hilfe wirklich dankbar
-
Ist dein AktuellesBitmap überhaupt groß genug um alles aufzunehmen was du da reinkopieren willst?
-
hmm?
global:
Graphics::TBitmap *AktuellesBitmap = new Graphics::TBitmap();
Graphics::TBitmap *WalkeCykleBitmap = new Graphics::TBitmap();mehr habe ich zur ini nicht gemacht
ich dachte er nimmt sich den platz den er braucht?
danke
flo
-
Besorg Dir mal die deutsche Version des BCB. Ohne Hilfe wirst Du mit dem BCB nicht viel anfangen können.
Und nein, die Größe mußt Du selbstverständlich selbst festlegen, ebenso das Farbformat.
-
hast du ne ahnung was bcb kostet

flo
-
Ja hab ich, ich hab einen gekauft.
-
ah super es fkt
danke nochmalsalso falls es jemanden interessier
AktuellesBitmap->Height = EinBilderGroesse; // gibt die hoehe vom bitmap an
AktuellesBitmap->Width = EinBilderGroesse; // gibt die breite vom bitmap anAktuellesBitmap->Canvas->CopyRect(ARect, WalkeCykleBitmap->Canvas, BRect); //kopiert das teil des bildes
danke
gibt es eine schüler version vom bcb
hab nur eine engl ebay versionflo