如何設定數位板(手寫、手繪板)的操作範圍? |
缺席
|
superrakce
一般會員 發表:24 回覆:35 積分:11 註冊:2006-10-09 發送簡訊給我 |
|
superrakce
一般會員 發表:24 回覆:35 積分:11 註冊:2006-10-09 發送簡訊給我 |
http://www.torry.net/quicksearchd.php?String=wintab&Title=Yes
從這個網址裡面下載觸控元件使用 [code delphi] procedure TSign.SetMapping(ClientRect:TRECT); var TabletX, TabletY: TAxis; AContext: TLogContextA; NewRect, PhysRect: TRect; function MapRectangles(A, B, C: TRect): TRect; var HA, HB, HC, WA, WB, WC, L, T: Integer; begin WA := A.Right - A.Left; WB := B.Right - B.Left; WC := C.Right - C.Left; HA := A.Bottom - A.Top; HB := B.Bottom - B.Top; HC := C.Bottom - C.Top; WA := WA * WB div WC; HA := HA * HB div HC; L := WA * C.Left div WB; T := HA * (B.Bottom - C.Bottom) div HB; Result.Left := -L; Result.Right := WA; Result.Top := A.Top - T; Result.Bottom := A.Top HA; end; begin if not JanHWinTab.Active then Exit; AContext :=JanHWinTab.Context; WTInfo(WTI_DEVICES, 12, @TabletX); WTInfo(WTI_DEVICES, 13, @TabletY); PhysRect := Rect(0, 0, Tabletx.axMax, TabletY.axMax); NewRect := MapRectangles(PhysRect, Screen.DesktopRect, ClientRect); AContext.lcInOrgX := NewRect.Left; AContext.lcInOrgY := NewRect.Top; AContext.lcInExtX := NewRect.Right; AContext.lcInExtY := NewRect.Bottom; JanHWinTab.Context := AContext; end; procedure TSign.Mappting(PaintBox: Timage); var PainRect:trect; begin PainRect.Left:=pp.BoundsRect.Left self.BoundsRect.Left 5 ; PainRect.Top:=pp.BoundsRect.Top self.BoundsRect.Top 35 panel3.Height ; PainRect.Right:=PainRect.Left pp.Width; PainRect.Bottom:=PainRect.Top pp.Height; SetMapping(PainRect); end; [/code] 這樣子,手繪板的操作區域就等同於指定能Canvas的區域 但實際上滑鼠的位置依然是對應整個螢幕,並非眼前所看到的。 所以畫線的位置需另外計算。 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |