Êîîðäèíàòû êóðñîðà íà ýëåìåíòå
|
|
×åòâåðã, 05 Ìàÿ 2016 ã. 21:11
+ â öèòàòíèê
Çäðàâñòâóéòå.
Íà ôîðìå åñòü ýëåìåíò ðèñóíîê â í¸ì îòñóòñòâóåò êàðòèíêà, âìåñòî ýòîãî â ñâîéñòâàõ òèï ôîíà óêàçàí îáû÷íûé è çàäàí öâåò.  èòîãå ïîëó÷àåòñÿ êâàäðàò. (ìîæíî êîíå÷íî èñïîëüçîâàòü ýëåìåíò ïðÿìîóãîëüíèê, íî æåëàòåëüíî âñ¸æå èçîáðàæåíèå).
Ñóòü â òîì ÷òî ìíå íóæíî óâåëè÷èâàòü ãëîáàëüíóþ ïåðåìåííóþ íà 1 êîãäà êóðñîð âõîäèò â îáëàñòü èçîáðàæåíèÿ è íà 1 êîãäà óõîäèò. Ïîêà êóðñîð âíóòðè ðèñóíêà ïåðåìåííàÿ íå ìåíÿåòñÿ.
Èñïîëüçóþ äëÿ ýòîãî ñîáûòèå "ïåðåìåùåíèå óêàçàòåëÿ" (MouseMove) ýëåìåíòà.
Private Sub Ðèñóíîê1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If (X = 0) Or (Y = 0) Or (X = 550) Or (Y = 550) Then
count = count + 1
End If
Me.Ïîëå1.Value = count ' âûâîäèò â ïîëå 1 çíà÷åíèå ãëîáàëüíîé ïåðåìåííîé
Me.Ïîëå2.Value = X ' âûâîäèò â ïîëå 2 çíà÷åíèå X
Me.Ïîëå3.Value = Y ' âûâîäèò â ïîëå 3 çíà÷åíèå Y
End Sub
Íî âîçíèêëè ïðîáëåìû/âîïðîñû:
1) Ðàçìåð êâàäðàòà 1x1ñì. Åãî Height è Width ðàâíû 567. Íî êîîðäèíàòû X è Y âûâîäÿòñÿ âñåãäà êðàòíûìè 5. Ïîýòîìó íåìîãó ïðîïèñàòü óñëîâèå If (X = Me.Ðèñóíîê1.Width) Or (Y = Me.Ðèñóíîê1.Height) Or (X = 0) Or (Y = 0) Then
Ìîæåò åñòü âîçìîæíîñòü óçíàâàòü êîîðäèíàòû áîëåå òî÷íî (èìåííî â ñàìîé ôèãóðå)
2) Õîòü ðàçìåð óêàçàí 567, íî ïðè âûâåäåíèè êîîðäèíàò ìàêñèìàëüíûé X (è Y) íà êîòîðîì âûõîäèò êóðñîð (òî åñòü ïîñëåäíåå çíà÷åíèå) ÿâëÿåòñÿ 555. Ïîëó÷àåòñÿ ÷òî ôèãóðà îáðåçàíà íà 12. Åñëè ó÷åñòü òî ÷òî øàãîì ÿâëÿåòñÿ 5 è êîîðäèíàòû âñåãäà êðàòíû èì òî ïîñëåäíåå çíà÷åíèå äîëæíî áûòü 565, à íå 555. Êóäà äåâàþòñÿ ýòè (?ïèêñåëè?).
3) Èíîãäà ïðîèñõîäèò îøèáî÷íîå ñðàáàòûâàíèå, òîãäà count óâåëè÷èâàåòñÿ íà 3 èëè æå âîîáùå íå ñðàáàòûâàåò.  ÷¸ì ìîæåò áûòü ïðè÷èíà ?
http://www.sql.ru/forum/1212772/koordinaty-kursora-na-elemente
-
Çàïèñü ïîíðàâèëàñü
-
0
Ïðîöèòèðîâàëè
-
0
Ñîõðàíèëè
-