TBitmap Grösse nach Erstellung ändern
-
Mahlzeit
kurze Frage: wie kann ich ein neu erstelltes Bitmap grössenmässig ändern, samt Inhalt?
Genau: Ich erstelle aus allen Zeichen eines Zeichensatzes Bitmaps. Ein Zeichen = ein Bitmap. Soweit so gut.
Nun muss ich diese Bitmaps zum Anzeigen vergrössern. Das soll nicht jedesmal beim Anzeigen passieren, sondern einmal. Nämlich nach dem erstelllen.
Nur wie? Hab mich da im Moment wohl in die völlig falsche Richtung verranntany Ideas?
grüssle
-
Hallo
Beim erstellen kannst du mit Canvas::StretchDraw das Original-Bitmap in ein neues, größeres kopieren. Allerdings ist das Ergbnis unter Umständen durch die Skalierung unscharf.
bis bald
akari
-
Au Backe sieht das übel aus. Zm Glück ist mir das nicht eingefallen
( <- soll ein Danke sein
)
Muss ich mal versuchen das ganze pixelweise 'hochzuziehen'
grüssle
-
Hallo
Naja warum vergrößerst du denn auch fertige Schrift? Du solltest lieber die Schrift beim DrawText gleich in einer größeren Schriftgröße zeichnen.
bis bald
akari
-
Hab ich versucht, das Prob ist die Änderung der FontSize.
AnsiString tst = char(zch); Graphics::TBitmap* nBmp = new Graphics::TBitmap(); int w = fCharImage->Canvas->TextWidth(tst); int h = fCharImage->Canvas->TextHeight(tst); fCharImage->Canvas->Font->Size = (-fCharImage->Canvas->Font->Height * 72 / fCharImage->Canvas->Font->PixelsPerInch)*8; fCharImage->Canvas->TextOut( 1, 1, tst.c_str() ); nBmp->PixelFormat= pf8bit; nBmp->Width = w; nBmp->Height = h; w *= 20; for( int j = 0; j < h; j++ ) { for( int u = 0; u < w; u++ ) if (fCharImage->Canvas->Pixels[u][j] == clBlack) fCharImage->Canvas->Pixels[u][j] = clWhite; else fCharImage->Canvas->Pixels[u][j] = clBlack; } nBmp->Canvas->Draw( 0, 0, fCharImage->Picture->Bitmap ); nBmp->SaveToFile( "c:\\tst.bmp" );
wenn ich die Fontsize setze, hat das resultierende Bitmap wohl die richtige Größe, aber die Farbumkehrung stimmt nicht mehr. Sprich im Ergebnis soll der Hintergrund schwarz und das Zeichen weiss sein.
Im Bitmap ist dann aber nur noch ein kurzer schwarzer Streifen links obenNaja, weiterversuchen
Thx