fix draw and add new design
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
This commit is contained in:
parent
d41b2c4c06
commit
573237fe1f
44
src/App.vue
44
src/App.vue
|
@ -27,11 +27,17 @@ const savePng = async () => {
|
||||||
<template>
|
<template>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<Sidebar>
|
<Sidebar>
|
||||||
<Input v-model="hMargin">Отступ для горизонтальных линий, мм</Input>
|
<div class="l-sidebar-block">
|
||||||
<Input v-model="vMargin">Отступ для вертикальных линии, мм</Input>
|
<h1>Линии</h1>
|
||||||
<Input v-model="imageWidth">Высота изображения, мм</Input>
|
<Input v-model="vMargin">Отступ по горизонтали, мм</Input>
|
||||||
<Input v-model="imageHeight">Ширина изображения, мм</Input>
|
<Input v-model="hMargin">Отступ по вертикали, мм</Input>
|
||||||
<button @click="savePng">Сохранить png</button>
|
</div>
|
||||||
|
<div class="l-sidebar-block">
|
||||||
|
<h1>Изображение</h1>
|
||||||
|
<Input v-model="imageHeight">Высота, мм</Input>
|
||||||
|
<Input v-model="imageWidth">Ширина, мм</Input>
|
||||||
|
<button class="l-button" @click="savePng">Сохранить как png</button>
|
||||||
|
</div>
|
||||||
</Sidebar>
|
</Sidebar>
|
||||||
<Page>
|
<Page>
|
||||||
<Canvas :vMargin="vMargin" :hMargin="hMargin" :imageWidth="imageWidth" :imageHeight="imageHeight" />
|
<Canvas :vMargin="vMargin" :hMargin="hMargin" :imageWidth="imageWidth" :imageHeight="imageHeight" />
|
||||||
|
@ -53,9 +59,37 @@ html {
|
||||||
align-items: center;
|
align-items: center;
|
||||||
height: 100vh;
|
height: 100vh;
|
||||||
width: 100vw;
|
width: 100vw;
|
||||||
|
font-family: MPLUS1p, sans-serif;
|
||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
background-color: aqua;
|
background-color: aqua;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.l-button {
|
||||||
|
color: #22333B;
|
||||||
|
background-color: #EAE0D5;
|
||||||
|
border: 1px solid #5E503F;
|
||||||
|
border-radius: 10px;
|
||||||
|
margin: 5px;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
font-family: 'MPLUS1p';
|
||||||
|
font-style: normal;
|
||||||
|
src: local('MPLUS1p'), url(/fonts/ttf/MPLUS1p-Light.ttf) format('truetype');
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
color: #C6AC8F;
|
||||||
|
}
|
||||||
|
|
||||||
|
.l-sidebar-block {
|
||||||
|
border: 1px solid #C6AC8F;
|
||||||
|
border-radius: 10px;
|
||||||
|
margin: 0 0 30px 0;
|
||||||
|
padding: 20px;
|
||||||
|
background-color: white;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -16,6 +16,7 @@ const clearCanvas = () => {
|
||||||
|
|
||||||
if (ctx.value) {
|
if (ctx.value) {
|
||||||
ctx.value.clearRect(0, 0, imageWidth * ONE_MM, imageHeight * ONE_MM);
|
ctx.value.clearRect(0, 0, imageWidth * ONE_MM, imageHeight * ONE_MM);
|
||||||
|
ctx.value.beginPath();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -4,10 +4,11 @@ const modelValue = defineModel();
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="input">
|
<div class="input">
|
||||||
<label>
|
<label class="l-label">
|
||||||
<slot></slot>
|
<slot></slot>
|
||||||
</label>
|
</label>
|
||||||
<input type="number" v-model="modelValue" />
|
<br>
|
||||||
|
<input class="l-input" type="number" v-model="modelValue" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -20,4 +21,11 @@ const modelValue = defineModel();
|
||||||
input {
|
input {
|
||||||
border: #333 1px solid;
|
border: #333 1px solid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.l-input {
|
||||||
|
margin: 10px 0;
|
||||||
|
border: 1px solid #C6AC8F;
|
||||||
|
padding: 10px;
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -9,14 +9,10 @@
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
width: 330px;
|
|
||||||
background-color: white;
|
|
||||||
|
|
||||||
margin: 10px;
|
margin: 10px;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
|
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
border-radius: 10px;
|
|
||||||
border: 1px solid #333;
|
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
/** 1 миллиметр в пикселях */
|
/** 1 миллиметр в пикселях */
|
||||||
export const ONE_MM = 12;
|
export const ONE_MM = 12;
|
||||||
|
|
||||||
export const DEFAULT_IMAGE_WIDTH = 210;
|
export const DEFAULT_IMAGE_WIDTH = 100;
|
||||||
export const DEFAULT_IMAGE_HEIGHT = 297;
|
export const DEFAULT_IMAGE_HEIGHT = 100;
|
||||||
|
|
||||||
export const DEFAULT_VERTICAL_MARGIN = 10;
|
export const DEFAULT_VERTICAL_MARGIN = 10;
|
||||||
export const DEFAULT_HORIZONTAL_MARGIN = 10;
|
export const DEFAULT_HORIZONTAL_MARGIN = 10;
|
Binary file not shown.
Loading…
Reference in New Issue