Bilder nebeneinander
-
1. Lade Dein Bild in ein Bitmap!
2. Rechne Flachenbreite / Bitmap- Breite
3. Rechne Flachenhoehe / Bitmap- HoeheZwei Schleifen schachteln (wie oft nebeneinander / Wie oft Uebereinander.
-- in Schleife mit Zeichenflaeche->Draw(....) an richtige Position zeichnen!Voila!
PS: Mist, zu langsam.
Zeichenflaeche == Form->Canvas
[ Dieser Beitrag wurde am 13.03.2003 um 13:04 Uhr von DerAltenburger editiert. ]
[ Dieser Beitrag wurde am 13.03.2003 um 13:06 Uhr von DerAltenburger editiert. ]
-
öhm das mitn berechnen is klar... nur das mit an die position zeichen... ehm könntest du mir mitn bisl code auf die sprünge helfen...?
[ Dieser Beitrag wurde am 13.03.2003 um 13:10 Uhr von scops editiert. ]
-
Sicher doch:
Das Bild ist in TBitmap BM geladen!!!
int Nx,Ny; Nx=Form1->ClientWidth / BM->Width; Ny=Form1->ClientHeight / BM->Height; for (int x=0;x<Nx;x++) { for (int y=0;y<Ny;y++) { Form1->Canvas->Draw(x * BM->Width,y * BM->Height,BM); } }
[ Dieser Beitrag wurde am 13.03.2003 um 13:16 Uhr von DerAltenburger editiert. ]
-
wenn ich das über deinen code schreib... naja dann hab i kein bitmap im fenster....:
Graphics::TBitmap *BM = new Graphics::TBitmap;
BM->LoadFromFile("BM.bmp");???
[ Dieser Beitrag wurde am 13.03.2003 um 13:24 Uhr von scops editiert. ]
-
Deine zwei Zeilen muessen VOR Bedrechnung Nx, Ny stehen!
Existiert eine datei "BM.bmp" im akt. Ordner???
Du musst einen gueltigen dateinamen angeben! :p
Nach der Schleie :
delet BM; // nicht vergessen!!!
[ Dieser Beitrag wurde am 13.03.2003 um 13:28 Uhr von DerAltenburger editiert. ]
-
jep BM.bmp gibts (sonst streikts ja beim exe aufruf)
der code:int Nx,Ny; Graphics::TBitmap *BM = new Graphics::TBitmap; BM->LoadFromFile("BM.bmp"); Nx=Form1->ClientWidth / BM->Width; Ny=Form1->ClientHeight / BM->Height; for (int x=0;x<Nx;x++) { for (int y=0;y<Ny;y++) { Form1->Canvas->Draw(x * BM->Width,y * BM->Height,BM); } } delete BM;
-
Wo rufst Du das ganze auf???
Das Laden sollte in OnCreate der Form
Das Deleten in OnDestroyDer Rest sollte in OnPaint Deiner Form!!!
BM muss 'ne Variable der Form sein (privat)
[ Dieser Beitrag wurde am 13.03.2003 um 13:37 Uhr von DerAltenburger editiert. ]
-
ah ok *G* klar... war alles da drin:
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { }
oki danke dir :))) ...
kann i das ganze au als background von nem popupmenü machn?
-
Ich glaub' nicht.
So geht's nur mit Objekten, die Dich an Canvas 'ranlassen (bzw. OnPaint). Macht aber PopupMenue nicht?
-
oki danke dir... hast mir sehr geholfen
-
ehm sorry aber hab das ganze mitn panel probiert...
geht nichtder meint zugriff nicht möglich?!
bzw. da gibts keine Canvas[ Dieser Beitrag wurde am 13.03.2003 um 14:02 Uhr von scops editiert. ]
-
Anm.: Das Laden von Files klappt erst im OnShow zuverlässig. Vor allem, wenn auf Doppelklick ein File geöffnet werden soll.
Das Panel kann das Bild nicht aufnehmen? - Hab damit noch nicht gearbeitet. Versuch mal, ob die Operation im OnPaint der Form gelingt. In der Form selbst klappt es in dem Ereignis auf jeden Fall.
<edit>Ich meide das OnCreate (obwohl es oft in den Beispielen genutzt wird) und verwende lieber den Constructor. Ist vielleicht Ansichtssache.</edit>
-
Gibt es, ist aber etwas versteckt.
Schau mal inner Hilfe unter B *junixnachmach*
.
-
Die Action geht auch via PopuMenuItem. Verweis in dessen Click-Ereignis auf FormPaint(Sender).
Pack die Routine dort rein oder verweis auf eine weitere Function. Damit nicht bei jedem OnPaint-Ereignis neu gekachelt wird, setz eine Bedingung:
if (Sender == [PopupMenuItem.Name])