Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,12 @@ public partial class ImagePreviewer
[Parameter]
public string? RotateRightIcon { get; set; }

/// <summary>
/// 获得/设置 预览缩放速度
/// </summary>
[Parameter]
public double ZoomSpeed { get; set; }

[Inject]
[NotNull]
private IIconTheme? IconTheme { get; set; }
Expand Down Expand Up @@ -126,5 +132,5 @@ protected override async Task OnAfterRenderAsync(bool firstRender)
/// <inheritdoc/>
/// </summary>
/// <returns></returns>
protected override Task InvokeInitAsync() => InvokeVoidAsync("init", Id, PreviewList);
protected override Task InvokeInitAsync() => InvokeVoidAsync("init", Id, PreviewList, new { ZoomSpeed });
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
import Data from "../../modules/data.js"
import Viewer from "../../modules/viewer.js"

export function init(id, prevList) {
export function init(id, prevList, config) {
const el = document.getElementById(id)
if (el === null) {
return
}

const viewer = {
el,
viewer: Viewer.init(el, prevList)
viewer: Viewer.init(el, prevList, config)
}
Data.set(id, viewer)
}
Expand Down
20 changes: 14 additions & 6 deletions src/BootstrapBlazor/wwwroot/modules/viewer.js
Original file line number Diff line number Diff line change
Expand Up @@ -145,16 +145,24 @@ export default {
// 右旋转功能
EventHandler.on(viewer.rotateRight, 'click', () => viewer.processImage(null, rotate => rotate + 90))


// 配置缩放速度因子(值越大缩放越快)
const BASE_SPEED = viewer.zoomSpeed ? viewer.zoomSpeed : 0.015; // 基础速度

const handlerWheel = e => {
e.preventDefault()
const wheel = e.wheelDelta || -e.detail
const delta = Math.max(-1, Math.min(1, wheel))
e.preventDefault();
const wheel = e.wheelDelta || -e.detail;
const delta = Math.max(-1, Math.min(1, wheel));

// 动态计算速度(按住Shift时降速)
const zoomStep = e.shiftKey ? BASE_SPEED * 0.2 : BASE_SPEED;

if (delta > 0) {
// 放大
viewer.processImage(scale => scale + 0.015)
viewer.processImage(scale => scale + zoomStep);
} else {
// 缩小
viewer.processImage(scale => Math.max(0.195, scale - 0.015))
// 缩小(保持最小缩放比例0.195)
viewer.processImage(scale => Math.max(0.195, scale - zoomStep));
}
}
// 鼠标放大缩小
Expand Down