/** * React跨端canvas组件,支持宽高自适应、H5与小程序绘图上下文获取,API与W3C标准一致。 * author: 元禾 * email: weicai.wwc@alibaba-inc.com */ import { CSSProperties } from 'react'; import './index.css'; /** * Canvas信息 */ export interface ICanvasInfo { canvas: HTMLCanvasElement; /** * 绘图上下文 */ context: CanvasRenderingContext2D; /** * 离屏绘图上下文 */ backContext?: CanvasRenderingContext2D; /** * 画布宽度 */ width: number; /** * 画布高度 */ height: number; /** * 画布像素比率,值越大分辨率越高,一般为2 */ pixelRatio: number; } /** * Canvas组件 */ export interface CanvasProps { /** * 自适应宽高 */ autoFit?: boolean; /** * 画布宽度 */ width?: number; /** * 画布高度 */ height?: number; /** * 像素比率 */ pixelRatio?: number; /** * 是否需要离屏canvas */ hasBackCanvas?: boolean; /** * CSS 样式 */ style?: CSSProperties; /** * 组件样式类名 */ className?: string; /** * canvas ID前缀 */ prefix?: string; /** * 绘图上下文类型 */ contextType?: '2d' | 'webgl'; /** * 获取绘图上下文的回调函数 */ onGetCanvasInfo: (c: ICanvasInfo) => any; /** * 事件 */ events?: { onTouchStart?: any; onTouchMove?: any; onTouchEnd?: any; onTouchCancel?: any; onLongPress?: any; }; onTouchStart?: any; onTouchMove?: any; onTouchEnd?: any; onTouchCancel?: any; onLongPress?: any; [key: string]: any; } declare const _default: (props: CanvasProps) => JSX.Element; /** * 跨端Canvas组件 * 支持宽高设置或者自适应 * * 备注: * - 编译时环境不存在document,但是this中存在——internal,即微信组件实例;运行时恰恰相反 * - 可以通过this或者document判断是编译时还是运行时 */ export default _default;