import React, { useCallback, useState } from 'react'; import DraggableModal from './DraggableModal'; import DraggableModalProvider from './DraggableModalProvider'; import '../../../node_modules/antd/dist/antd.less'; import './index.less'; import { ZoomInOutlined, ZoomOutOutlined, RotateLeftOutlined, RotateRightOutlined, SyncOutlined, } from '@ant-design/icons'; const ImagePreview = ({ src, visible, setOpen }: any) => { const onOk = useCallback(() => setOpen(true), [setOpen]); const onCancel = useCallback(() => setOpen(false), [setOpen]); const [scale, setScale] = useState(1); const [rotate, setRotate] = useState(0); const [style, setStyle] = useState({ transform: 'scale(1) rotate(0)', transformOrigin: 'center center', }); const translateHandle = (e: string) => { switch (e) { case '+': { const _scale = +(scale + 0.1).toFixed(1); setScale(_scale); setStyle({ ...style, transform: `scale( ${_scale}) rotate(${rotate}deg)`, }); } break; case '-': if (scale > 1) { const _scale = +(scale - 0.1).toFixed(1); setScale(_scale); setStyle({ ...style, transform: `scale( ${_scale}) rotate(${rotate}deg)`, }); } break; case 'left': { const _rotate = rotate + 90; setRotate(_rotate); setStyle({ ...style, transform: `scale( ${scale}) rotate(${_rotate}deg)`, }); } break; case 'right': { const _rotate = rotate - 90; setRotate(_rotate); setStyle({ ...style, transform: `scale( ${scale}) rotate(${_rotate}deg)`, }); } break; case 'refresh': setStyle({ ...style, transform: `rotate(${rotate}deg)`, width: `${scale * 100}%`, }); break; default: break; } }; return (
translateHandle('left')} className="preview-btn-item" /> translateHandle('right')} className="preview-btn-item" /> translateHandle('refresh')} className="preview-btn-item" /> 1 ? 'pointer' : 'default', color: scale > 1 ? 'rgba(255,255,255,1)' : 'rgba(255,255,255,0.25)', }} onClick={() => translateHandle('-')} className="preview-btn-item" /> translateHandle('+')} className="preview-btn-item" />
图片加载异常
); }; export default ImagePreview;