TBitmap "erzeugen" -----> Performance problem
-
Hallo zusammen, ich habe hier ein kleines Problem das wie folgt aussieht. Ich soll so eine Art "Zeichenprogramm" erstellen (BCB 5), wo bei ich diverse Objekte ( Linien, Rechtecke, sowas wie Pfeile) erzeuge
Dazu habe ich eine neue Komponente geschrieben, welche diese dann zeichnet ( abgeleitet aus TBitmap).In meinem Hauptprogramm habe ich ein Panel, und dieses fungiert als Parent von den neuen Objekten. Alles klappt, nur das der scheiss elends langsam ist.
Testzeise erzeuge ich so um die 200 Objekte, und die ganze Geschichte dauert ziemlich genau 120 Sekunden. ( auf einem 1700er......) naja... das ganze sollte halt auch bei einem 500er noch "annehmbar" laufen.
Was würdet Ihr in solch einem Fall machen?
Statt TBitmap TPaintbox nehmen?,.....Bin um jeden Tipp dankbar

Thx im vorraus
-
fuck, verklickt

gehört ja zu VLC
-
Dieser Thread wurde von Moderator/in dEUs aus dem Forum MFC (Visual 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.
-
GoTschA schrieb:
Bin um jeden Tipp dankbar
Tip: zeig uns konkret, was du bisher versucht hast.
-
Also so sieht die Komponente aus (nur das wichtigste):
__fastcall TBauteile::TBauteile(TComponent* Owner): TImage(Owner)
{
TeileFarbe = clBlack;
this->Transparent = true;
this->Stretch = false;
this->EntfernungZumAuslas = 0;
this->Nennvolumen = 0.0;}
// x und y, dienen nur für drucken & screenshot
void __fastcall TBauteile::LeitungQuerPaint(TCanvas *Sender, int x=0, int y=0)
{
ZeichenFlaecheLoeschen(NULL);this->Transparent = true;
this->Picture->Bitmap->Width = this->Width;
this->Picture->Bitmap->Height = this->Height;
Sender->Pen->Color = TeileFarbe;Sender->MoveTo(x,y + this->Height / 2);
Sender->LineTo(x + this->Width-1, y + this->Height / 2);// Wo darf nix angeschlossen werden
this->Oben = -1;
this->Unten = -1;
}und so wird eine Instanz erzeugt:
TBauteile (&neu) = box[test];
neu = new TBauteile(this);
neu->Parent = Panel1;
neu->Bezeichnung = _Nebenleitung;
neu->Left = test15;
neu->Top = test*15;
neu->Height = 16;
neu->Width = 80;
neu->OnMouseDown = TeileMouseDown;
neu->OnMouseMove = TeileMouseMove;
neu->OnMouseUp = TeileMouseUp;
neu->bauteil = 2; // darüber wird dann in der Komponente entschieden was // geichnet wird, in diesem Fall LEitung QuerPaint....Was mache ich verkehrt? (es tut, ist halt nur langsam)
-
Hast du XP? Habe bei mir auch so Probleme mit der Laufzeit und Bitmaps unter XP. Auf nem viel langsameren PC mit Win95 drauf läuft mein Programm um den Faktor 10 schneller

-
Erkläre mir bitte mal den Sinn folgender 2 Zeilen:
TBauteile *(&neu) = box[test]; neu = new TBauteile(this);Du weißt was du da machst?
-
Nein ich habe win2k,
in diesen beiden Zeilen erzeuge ich eine neue Instanz von TBauteile, und
setze einen Pointer in ein Array (box), so das ich auch immer drauf zugreifen kann