CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Przewijanie TImage z ScrollBoxem

Przewijanie TImage z ScrollBoxem

problemy z tworzeniem aplikacji graficznych oraz audio i wideo

Przewijanie TImage z ScrollBoxem

Nowy postprzez Przemyslav » sobota, 7 czerwca 2014, 15:14

Witam serdecznie :) Mam podobny problem jak kolega (viewtopic.php?f=4&t=1416 - jakoś nie mogłem dodać nowego postu), tzn. mam taką formę:

Obrazek

i na tą chwilę mogę przewijać mapkę z TImage tylko ScrollBox'em. Próbowałem dodawać porady zawarte w tamtym temacie, ale niestety nie zadziałało. Czy jest możliwość zrobienia w taki sposób, że użytkownik klikając LPM na mapce i trzymając może ją płynnie przeciągać i przesuwać w obrębie ScrollBoxa. Tak jakby przesuwał prawdziwą np. AutoMapę, czy Google Maps?? Dziękuję za pomoc :)
Avatar użytkownika
Przemyslav
Bladawiec
Bladawiec
 
Posty: 42
Dołączył(a): niedziela, 25 maja 2014, 13:59
Podziękował : 22
Otrzymał podziękowań: 0
System operacyjny: Windows 10 x64
Kompilator: C++ Builder 6
Gadu Gadu: 0
    Windows 7Firefox

Re: Przewijanie TImage z ScrollBoxem

Nowy postprzez Cyfrowy Baron » sobota, 7 czerwca 2014, 22:39

Ustaw DoubleBuffered obiektu ScrollBox na true, żeby wyeliminować efekt migotania obrazu podczas przesuwania. A oto kod:

Plik nagłówkowy np. Unit1.h
KOD cpp:     UKRYJ  
private:
                int iX, iY;
                bool bMove;


Plik źródłowy np. Unit1.cpp
KOD cpp:     UKRYJ  
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 bMove = false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
                  int X, int Y)
{
 iX = X;
 iY = Y;
 bMove = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift, int X,
          int Y)
{
 if( !bMove ) return;

 ScrollBox1->HorzScrollBar->Position = ScrollBox1->HorzScrollBar->Position + iX - X;
 ScrollBox1->VertScrollBar->Position = ScrollBox1->VertScrollBar->Position + iY - Y;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
          int X, int Y)
{
 bMove = false;
}

Za ten post autor Cyfrowy Baron otrzymał podziękowanie od:
Przemyslav
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows 7Firefox

Re: Przewijanie TImage z ScrollBoxem

Nowy postprzez Przemyslav » sobota, 7 czerwca 2014, 23:01

Dziękuję serdecznie za pomoc :) Sam bym na to nie wpadł :) Jesteś nie oceniony ^_^
Avatar użytkownika
Przemyslav
Bladawiec
Bladawiec
 
Posty: 42
Dołączył(a): niedziela, 25 maja 2014, 13:59
Podziękował : 22
Otrzymał podziękowań: 0
System operacyjny: Windows 10 x64
Kompilator: C++ Builder 6
Gadu Gadu: 0
    Windows 7Firefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Aplikacje multimedialne, graficzne

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 8 gości

cron