Śledzenie kursora myszki liniami

dział ogólny

Śledzenie kursora myszki liniami

Nowy postprzez Corvis » niedziela, 19 lipca 2009, 12:34

Witam,

Napisałem prostą funkcję która mi rysuje przez środek punktu na który wskazuje mysz linie problem jest taki, że jeżeli nie odświeże obrazu ( po chwili jest on zamazany ) Jeżeli odświeże to miga. Dodałem DoubleBuffered ale słabo pomoga.

Kod: Zaznacz cały
void __fastcall TForm4::FormMouseMove(TObject *Sender, TShiftState Shift, int X, int Y)
{
   Form4->Canvas->MoveTo(X,0);
   Form4->Canvas->LineTo(X,Form4->ClientHeight);
   Form4->Canvas->MoveTo(0,Y);
   Form4->Canvas->LineTo(Form4->ClientWidth,Y);
   Form4->Refresh();
}


Może mi ktoś powiedzieć co robię źle ?

Pozdrawiam
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    NieznanyNieznana

Re: Śledzenie kursora myszki liniami

Nowy postprzez polymorphism » niedziela, 19 lipca 2009, 13:18

Próbowałeś rysować po TImage?
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    NieznanyNieznana

Re: Śledzenie kursora myszki liniami

Nowy postprzez Corvis » niedziela, 19 lipca 2009, 13:40

Dokładnie o to chodziło :)

Dzięki
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
Podziękował : 80
Otrzymał podziękowań: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    NieznanyNieznana

Re: Śledzenie kursora myszki liniami

Nowy postprzez seweryn » niedziela, 19 lipca 2009, 14:55

Problem polega na złej kolejności działań. Spróbuj robić to w ten sposób:
Kod: Zaznacz cały
void __fastcall TForm4::FormMouseMove(TObject *Sender, TShiftState Shift, int X, int Y)
{
   Refresh();
   Canvas->MoveTo(X,0);
   Canvas->LineTo(X,ClientHeight);
   Canvas->MoveTo(0,Y);
   Canvas->LineTo(ClientWidth,Y);
}

Dodatkowo ustaw właściwość formy DoubleBuffered na true
Avatar użytkownika
seweryn
Bladawiec
Bladawiec
 
Posty: 33
Dołączył(a): sobota, 11 lipca 2009, 10:42
Podziękował : 1
Otrzymał podziękowań: 0
Kompilator: C++ Builder 2010
    NieznanyNieznana

Re: Śledzenie kursora myszki liniami

Nowy postprzez Cyfrowy Baron » niedziela, 19 lipca 2009, 16:13

Sugerowałbym użycie zamiast Refresh() funkcji Invalidate() mniej obciąża program gdyż odświeża tylko to co uległo zmianie.
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
    NieznanyNieznana

Re: Śledzenie kursora myszki liniami

Nowy postprzez seweryn » niedziela, 19 lipca 2009, 16:29

u mnie z Invalidate() nie działa
Avatar użytkownika
seweryn
Bladawiec
Bladawiec
 
Posty: 33
Dołączył(a): sobota, 11 lipca 2009, 10:42
Podziękował : 1
Otrzymał podziękowań: 0
Kompilator: C++ Builder 2010
    NieznanyNieznana

Re: Śledzenie kursora myszki liniami

Nowy postprzez polymorphism » niedziela, 19 lipca 2009, 22:07

Nie działa, bo Invalidate oznacza obszar okna do odmalowania przy pierwszej nadarzającej się okazji. Samo wywołanie tej funkcji nie powoduje odmalowania okna (nie generuje komunikatu WM_PAINT).
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    NieznanyNieznana


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Google [Bot] i 6 gości