Trace:
Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
csharp:zoom [2020/05/06 15:17] superuser |
csharp:zoom [2022/12/06 04:41] (current) superuser |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | # С использованием матриц | ||
| + | <code:csharp> | ||
| + | TransformationMatrix = TransformationMatrix | ||
| + | * Matrix.CreateTranslation(-_lastMousePosition.X, -_lastMousePosition.Y, 0) | ||
| + | * Matrix.CreateScale((e.Delta > 0) ? 0.9f : (1f / 0.9f)) | ||
| + | * Matrix.CreateTranslation(_lastMousePosition.X, _lastMousePosition.Y, 0); | ||
| + | </code> | ||
| + | ---- | ||
| Для реализации зума по Х необходимо спроецировать его из координат окна в локальное адресное пространство сцены. | Для реализации зума по Х необходимо спроецировать его из координат окна в локальное адресное пространство сцены. | ||
| Line 60: | Line 68: | ||
| ---- | ---- | ||
| + | подставив значения и сократив получаем: | ||
| + | ---- | ||
| + | <code:csharp> | ||
| + | var xoffset = windowTargetX / newZoom - (windowTargetX / oldZoom - oldXoffset); | ||
| + | </code> | ||
