当前位置: 首页 > news >正文

高端品牌网站建设制作多少钱公司注册资金500万

高端品牌网站建设制作多少钱,公司注册资金500万,网站首页设计报告,定制网站型网站开发刻度尺组件,可支持横向、纵向,同时支持通过缩放比调节缩放比例。在一些可视化设计组件中使用。 截图 横向刻度尺 纵向刻度尺 参数说明 layout?: ‘horizontal’ | ‘vertical’,标尺方向,默认为:horizontal&#xff…

刻度尺组件,可支持横向、纵向,同时支持通过缩放比调节缩放比例。在一些可视化设计组件中使用。

截图

横向刻度尺

在这里插入图片描述

纵向刻度尺

在这里插入图片描述

参数说明

  • layout?: ‘horizontal’ | ‘vertical’,标尺方向,默认为:horizontal;

  • scale: number,缩放比;

  • rulerColor?: string,标尺颜色默认为:#000000;

  • labelColor?: string,标尺刻度数字颜色默认为:#000000

  • mousemove(position: number): void,鼠标移动时触发;

  • click(position: number): void,鼠标点击时触发;

组件源码

<!--* @Description: 刻度尺组件* @Author: wang keju* @Email: git config user.email* @Date: 2025-03-04 07:12:35* @LastEditTime: 2025-03-04 07:35:06* @LastEditors: wang keju
-->
<script lang="ts" setup>
import { onMounted, ref, watch } from 'vue'type Props = {layout?: 'horizontal' | 'vertical';scale: number;rulerColor?: string;labelColor?: string;
}const props = withDefaults(defineProps<Props>(), {layout: 'horizontal',rulerColor: '#000000',labelColor: '#000000',
})const emits = defineEmits<{(event: 'mousemove', position: number): void(event: 'click', position: number): void
}>()const canvasRef = ref<HTMLCanvasElement>()onMounted(draw)
watch(props, draw)/*** @description: 根据布局方向,绘制标尺* @return {*}*/
function draw () {drawSketchRuler()
}/*** @description: 绘制刻度* @return {void}*/
function drawSketchRuler() {const canvas = canvasRef.valueif (!canvas) returnconst containerRect = canvas.getBoundingClientRect()canvas.width = containerRect.widthcanvas.height = containerRect.heightconst ctx = canvas.getContext('2d')if (!ctx) return// 清空画布ctx.clearRect(0, 0, containerRect.width, containerRect.height)// 设置线条样式ctx.strokeStyle = props.rulerColorctx.lineWidth = 1// 绘制标尺刻度数字ctx.font = '12px Arial'ctx.textAlign = 'center'ctx.textBaseline = 'top'ctx.fillStyle = props.labelColorconst scale = props.scaleconst rulerConfig = [{ min: 8, max: 10, minSketch: 0.5, middleSketch: 2.5, maxSketch: 5 },{ min: 4, max: 8, minSketch: 1, middleSketch: 5, maxSketch: 10 },{ min: 2, max: 4, minSketch: 2, middleSketch: 10, maxSketch: 20 },{ min: 1, max: 2, minSketch: 5, middleSketch: 25, maxSketch: 50 },{ min: 0.5, max: 1, minSketch: 10, middleSketch: 500, maxSketch: 100 },{ min: 0.3, max: 0.5, minSketch: 20, middleSketch: 100, maxSketch: 200 },{ min: 0.1, max: 0.3, minSketch: 50, middleSketch: 250, maxSketch: 500 },{ min: 0.01, max: 0.1, minSketch: 100, middleSketch: 500, maxSketch: 1000 },]let info = scale >= 10 ? rulerConfig[0] : rulerConfig.find((item) => item.min <= scale && scale < item.max)if (!info) returnconst { minSketch, middleSketch, maxSketch } = infoif (props.layout === 'horizontal') {for (let i = 0; i <= containerRect.width / scale; i += 1) {const point = i * props.scaleif (i % maxSketch === 0) {ctx.beginPath()ctx.moveTo(point, 0)ctx.lineTo(point, 14)ctx.stroke()i !== 0 && ctx.fillText(String(i), point, 16);} else if (i % middleSketch === 0) {ctx.beginPath()ctx.moveTo(point, 0)ctx.lineTo(point, 10)ctx.stroke()} else if (i % minSketch === 0) {ctx.beginPath();ctx.moveTo(point, 0)ctx.lineTo(point, 6)ctx.stroke()}}} else {for (let i = 0; i <= containerRect.height / scale; i += minSketch) {const point = i * props.scaleif (i % maxSketch === 0) {ctx.beginPath()ctx.moveTo(0, point)ctx.lineTo(14, point)ctx.stroke()} else if (i % middleSketch === 0) {ctx.beginPath()ctx.moveTo(0, point)ctx.lineTo(10, point)ctx.stroke()} else if (i % minSketch === 0) {ctx.beginPath()ctx.moveTo(6, point)ctx.lineTo(0, point)ctx.stroke()}}// 纵向标尺,绘制纵向文本ctx.rotate(-Math.PI / 2);for (let i = 0; i <= containerRect.height / Math.min(scale, 1); i += minSketch) {const point = i * props.scaleif (i % maxSketch === 0) {if (i !== 0) {ctx.fillText(String(i), -point, 16)}}}ctx.restore()}
}/*** @description: 点击标尺触发* @param {MouseEvent} e* @return {void}*/
const onClick =  (e: MouseEvent) => {const position = props.layout === 'horizontal'? (e.offsetX) / props.scale: (e.offsetY) / props.scaleemits('click', Math.ceil(position * 10) / 10)
}/*** @description: * @param {MouseEvent} e* @return {void}*/
const onMousemove = (e: MouseEvent) => {const current = props.layout === 'horizontal' ? e.layerX / props.scale : e.layerY / props.scaleemits('mousemove', Math.ceil(current * 10) / 10)
}</script><template><canvas style="width: 100%; height: 100%;" ref="canvasRef" @click="onClick" @mousemove="onMousemove" />
</template>
http://www.dtcms.com/a/439719.html

相关文章:

  • 有谁用2008做网站服务器哪里有做企业网站的
  • 沙漠风网站建设公司学校的网站怎么做的好
  • 山东淄博网站建设公司深圳尚层装饰公司官网
  • 网站的建设与板块昆明公司建设网站
  • 解决VirtualBox虚拟机与主机之间无法复制粘贴的问题及时间同步问题
  • 查询网站后台地址企业宣传片制作多少钱
  • 宿迁网站建设方案建站系统低价建站新闻资讯
  • ERP系统迁移之前要做什么?ERP迁移的准备工作
  • 广州 营销型网站建设公司wordpress加js
  • 如何自己做众筹网站优秀校园网站
  • 网站制作价格服务中国建设银行的网站.
  • 网站默认中文字体网站怎么做静态化
  • 做软装搭配的网站用ps怎么做网站导航条怎么做
  • 北京网站建设的价格国际新闻最新消息今天乌克兰与俄罗斯视频
  • 中山住房和建设局工程交易网站装修公司手机网站模板
  • 怎么免费建立个人网站设计师网站库
  • 2015做哪个网站致富自己有服务器怎么做网站
  • [Dify] 向知识库中导入 API 抓取的数据内容
  • 包站长ppt网站直接拖拉做网站的软件
  • 如企业网站模板下载怎么找做网站的公司
  • SFTP 概念及题目
  • 12.排序(下)
  • 三水区网站建设网站建设任职资格
  • 小说网站建设笺池斋wordpress怎么添加视频
  • 网站建站的作用广州在线图文网络科技中心网站建设
  • 建设360导航网站的目的是什么做淘客找单子的网站
  • 网站版面做好永康做网站的
  • dede中国风网站模板wordpress 超过20M
  • wordpress短代码返回html排名优化是什么意思
  • 中国建设银行网站口手机网站在后台怎么做编辑