1. 程式人生 > >OnMouseMove移動位置和OnMouseWheel縮放實現

OnMouseMove移動位置和OnMouseWheel縮放實現

1. 基本作用

OnMouseMove響應滑鼠移動事件

OnMouseWheel響應滑鼠中鍵的滾動

2. 引數說明

afx_msgvoidOnMouseMove(UINTnFlags, CPointpoint);

nFlags說明:指示虛擬按鍵是否按下 ,此引數可以是任何下列值的組合

MK_CONTROL 當CTRL鍵按下時 MK_LBUTTON 當滑鼠左鍵按下時 MK_MBUTTON 當滑鼠中鍵按下時(滾動不屬於按下) MK_RBUTTON 當滑鼠右鍵按下時. MK_SHIFT 當SHIFT按下時。

point說明:滑鼠的X,Y座標:該座標為滑鼠相對所在視窗左上角為基點的位置,是一個相對位置而不是在螢幕畫素上的絕對位置。

afx_msg BOOL OnMouseWheel( UINT nFlags, shortzDelta, CPointpt );

nFlags同上

zDelta:大於0時為向上滾動,小於0時為向下滾動。A value less than zero indicates rotating back (toward the user) while a value greater than zero indicates rotating forward (away from the user). Windows下通常向上滾動縮小/視窗上移,反之放大/下移

pt::滑鼠的X,Y座標,是以其父視窗的左上角為基點的。Specifies the x- and y-coordinate of the cursor. These coordinates are always relative to the upper-left corner of the window.

3. 移動的效果實現

要實現移動,例如滑鼠左鍵拖動butoon/圖片在視窗上移動,實現的結果附加要求:滑鼠放在button/圖片的A點,移動之後,滑鼠點依然在A點上

我們通過

a. 檢測滑鼠已在button/圖片上(確保不是在哪都可以移動圖示),並且左鍵按下

b. 記錄滑鼠當前點和上個點,計算兩個的偏移值,然後使用這個偏移值來移動button/圖片(MoveWindows)

(記錄上個點的方法可以使用靜態變數,移動完畢後,把當前點賦值給靜態變數)(具體實現可以靈活處理)

實現原理是:相對靜止---滑鼠和物件相對位置不變,滑鼠的偏移量,就是我們物件的偏移量

4. 縮放的效果實現(以滑鼠點為中心縮放)

要實現縮放,例如中件滑輪向上滑動縮小,向下滑動放大button/圖片,實現附加要求:滑鼠放在button/圖片的A點,縮放之後,滑鼠點依然在A點上,縮放是以滑鼠點為中心

a. 同樣檢測滑鼠已在button/圖片上(確保不是在哪都可以縮放button/圖片)

b. 獲取當前button/圖片的高和寬(使用getClientRect)

c. 獲取當前pt點x,y相對於button/圖片位置,然後計算該位置相對於寬和高的比值

d. 判斷zDelta正負確定放大縮小(按比例調整圖片高度和寬度),並調整圖片左上點(left,top)的位置,確保c中的比值不變(---確保了以滑鼠所在點為中心放大或縮小)

實現原理是:相對移動---滑鼠和所在物件點位置不變,滑鼠所在物件點的周圍 長和寬 成比例的縮放

相關推薦

OnMouseMove移動位置OnMouseWheel實現

1. 基本作用 OnMouseMove響應滑鼠移動事件 OnMouseWheel響應滑鼠中鍵的滾動 2. 引數說明 afx_msgvoidOnMouseMove(UINTnFlags, CPointpoint); nFlags說明:指示虛擬按鍵是否按下 ,此引數可以

MFC的OnMouseMove移動位置OnMouseWheel實現

1. 基本作用 OnMouseMove響應滑鼠移動時間 OnMouseWheel響應滑鼠中鍵的滾動 2. 引數說明 afx_msgvoidOnMouseMove(UINTnFlags, CPointpoint); nFlags說明:指示虛擬按鍵是否按下 ,此引

PyQt5無邊框視窗的標題拖動視窗實現

網上找了半天都找不到好用的PyQt5無邊框視窗的實現 借鑑部分前輩的視窗拖放程式碼 自己搗鼓了一下,實現了一下無邊框視窗,問題可能還有一點,慢慢改吧 先做個筆記 py檔案 #!/usr/bin/env python #-*- coding:utf-

安卓觸控手勢事件實現圖片跟著手指移動圖片

效果如下: 佈局程式碼: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

MFC滑鼠事件-OnMouseMove移動OnMouseWheel

(1)目的說明:重新實現MFC中的滑鼠事件函式,實現滑鼠左鍵拖動效果和滾輪拖動效果。(2)滑鼠事件說明:OnMouseMove響應滑鼠移動事件OnMouseWheel響應滑鼠中鍵的滾動(3)滑鼠事件引數說明afx_msgvoidOnMouseMove(UINTnFlags,

圖片使用滑鼠移動滾輪js以及外掛

CSS頁面(img標籤必須含有此id) <img id="imageFullScreen" src="" alt=""> JavaScript程式碼: $(document).ready(function() {//圖片移動放大 需配合上面的js才生效 $

一行程式碼實現view拖拽移動、雙指效果

實現原理:通過重寫View.OnTouchListener實現拖拽與縮放效果; 注意:如果對含有子類的viewGroup設定,子類的大小可能不變,因為縮放的效果程式碼用的是view.layout(),只是改變了當前設定觸控監聽view的大小,裡面子類的大小是沒有變的; 如果想子類一起改變

html5 在移動端禁止頁面選中複製

最近在開發過程中,遇到客戶提出移動端禁止頁面縮放和禁止長按選中複製等屬性,除在安卓/ios原生中加入相應許可權外,html5頁面也可以作相應的設定。 <meta content="width=device-width, initial-scale=1.0, maxim

viewPager+photoView實現圖片輪播手勢功能 支援手勢的imageView 如何實現相簿左右滑動手勢 如何讓圖片自適應控制元件大小 photoView如何使用(上)

import uk.co.senab.photoview.IPhotoView; import uk.co.senab.photoview.PhotoViewAttacher; import uk.co.senab.photoview.PhotoViewAttacher.OnMatrixChangedList

js移動端雙指旋轉

在iOS上有一組雙指事件gesturestart、gesturechange、gestureend gesturestart觸發條件是當螢幕上有兩根或以上手指並且第二根手指放在當前元素上 當兩根手指

04 canvas——位移畫布旋轉

繪制 context restore math degree 角度 屬性 案例 ott 4.1 縮放 scale() 方法縮放當前繪圖,更大或更小 語法:context.scale(scalewidth,scaleheight) scalewidth : 縮放當前

移動端雙指、旋轉

target tlist back col get ret for charset length <!DOCTYPE html><html><head> <meta charset="UTF-8"> <tit

QTI圖片顏色變化大小實現

Image {         id: icon         source: "image.png"     &

CABasicAnimation的使用方法(移動,旋轉,

設定動畫CABasicAnimation的屬性和說明 屬性 說明 duration 動畫的時間 repeatCount 重複的次數。不停重複設定為 HUGE_VALF repeatDuratio

[Unity3D]Unity3D遊戲開發之滑鼠旋轉、實現3D物品展示

各位朋友,大家好,我是秦元培,歡迎大家關注我的博主,我的部落格地址是blog.csdn.net/qinyuanpei。最近博主重點研究了攝像機旋轉、縮放等問題,那麼今天為大家分享的是一個在3D展示中比較常用的功能,即通過滑鼠右鍵實現旋轉、滑鼠滾輪實現縮放、滑鼠中鍵實現平移

php圖片實現程式碼

php圖片縮放實現方法與示例程式碼。 php基礎之圖片縮放:<?php /** * image zoom. * php圖片縮放功能 *整理: www.jbxue.com */ function imageZoom($filename,

CSS3感應滑鼠背景閃爍圖片效果

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html

Unity 移動端簡單手勢控制(移動,旋轉,

using UnityEngine; using System.Collections; using System.IO; /// <summary> /// 點選螢幕實現縮放與旋轉,移動 /// </summary> public cl

Python圖片中的實現,以及多種尺寸icon的生成

在pillow中圖片的縮放有兩種方式,1.使用resize函式,2,使用thumbnail函式 resize函式可以縮小,也可以放大 thumbnail只能縮小,不能放大 所以,如果你只打開一次圖片,要存出多個尺寸的話,要麼,從大到小開始縮放。 要麼,使用resize.建議

css3變形屬性transform,rotate(旋轉),translate(移動),scale(),skew(扭曲),matrix(矩陣)

原文連結這個很簡單,就跟border-radius一樣,就是一個引數,同樣是針對不同的瀏覽器有不同的私有屬性。w3c上的例子是這樣子寫的:·div { transform:rotate(7deg); -ms-transform:rotate(7deg); /* IE 9 */