Width von Panel in beiden Richtungen ändern



  • Hallo Leute,

    hab hier ein Panel, dessen Größe ich in einem Timer pixelweise verändere:

    void __fastcall TForm1::tmrTimer(TObject *Sender)
    {
      if(pnlVideoo->Width<1257)
        pnlVideoo->Width++;
    

    ich wollte nun so machen, dass ich dieses panel zentriert auf das formular anlege und die breite des panels in beiden richtungen größer wird, also nicht nur nach rechts (wie im code) sondern auch nach links...soll eine animation für "vorhang-öffnen" spielen...

    vielen dank
    lg
    Darkman89



  • Hallo

    Und wo ist dein Problem? Zunächst berechnest du von der Anfangsbreite ausgehend die Mitte, und dann pro Schritt Left -1 und Width +2.

    bis bald
    Stefan



  • Dann eben nicht nur die Weite des Panels ändern sondern auch die Position mit TPanel::Left

    //zu spät; die Lösung von akari ist noch besser



  • Hallo,

    erstmals danke für die schnelle antworten. das problem liegt darin, dass es quasi eine kinoleinwand spielen soll...sprich: der vorhang geht von der mitte aus gesehen in beiden richtungen auf. ich hab da ein panel, in diesem panel ein bild(vorhang) und dann in der mitte noch ein panel, wo das video abgespielt werden soll.

    das mit left hatte ich auch schon gedacht, das problem besteht ja darin, dass es nicht in der mitte geöffnet wird der vorhang, sondern ganz links...



  • Hallo

    Am einfachsten wäre es, wenn du den "Vorhang" auf zwei statt einem Panel horizontal aufteilst. Am Anfang sind dann beide Panels noch zusammen und bedecken den Film im Hintergrund. Der Timer setzt nun in jedem Schritt das linke Panel weiter nach links und das rechte weiter nach rechts, bis sie ganz weg sind.

    bis bald
    akari



  • und noch eine Vereinfachung dazu: Du setzt die 2 Vorhangpanels in Dein Filmpanel und orientierst das linke mit align=alLeft und das rechte mit alRight und schon mußt Du Dich nur noch um die Breite und nicht mehr um die Position kümmern.

    Gruß myerscola


Log in to reply