آموزش ساخت اشکال مختلف با konva بخش اول

سلام وعرض ادب

توی این بخش می خوام به شما توضیح بدم که چطور می تونید از طریق konva شکل های مختلفی بسازید

توی سایت خود konva به مثل هایی اشاره شده که بنده براتون توضیح میدم

اگر بخوایم شکل ها رو در Konva دسته بندی کنیم  چنین چیزی بدست میاد

Rect : مستطیل

Circle : دایره

Ellipse : بیضی

Wedge :  گوه ( به تکه ای از دایره )

Line : که انواع مختلفی داره

Sprite : شکلی که تشکیل شده از چند تصویر است

image : تصویر

Text : نوشته

Star : ستاره

Ring : حلقه

Arc : بخشی از حلقه

RegularPolygon : چند ظلعی

custom  : به مفهوم سفارشی که توضیح میدم

 

تک تک بصورت کامل توضیح میدم :

Rect یا مستطیل  : شامل هر شکل چهار گوشی می شود یعنی شما هم می تونید بااین دستور مربع بسازی هم مستطیل

خب دستور چیه :

Konva.Rect({مشخصات شکل })

یه مثال بزنم :

var rect1 = new Konva.Rect({
        x: 20,
        y: 20,
        width: 100,
        height: 50,
        fill: 'green',
        stroke: 'black',
        strokeWidth: 4,
      });

به مثال بالا دقت کنید بنده یک ظرف ساختم به نام rect1 بعد اومدم گفتم یک آبجکت جدید ایجاد کن از konva زیر مجموعه rect  که مشخصاتش این باشه یعنی در محوریت x و y    قرار بگیره  وwidth  (طول) و height (ارتفاع) این باشه  رنگش (fill) سبز باشه و خط دورش (stroke) رنگش سیاه باشه  تازه خط دورشم (strokewidth) مقدارش 4 باشه

بعد از ایجاد شکل باید اونو به لایه اضافه کنیم

دستور کامل توی این صفحه هست میتویند نگاه کنید konva.rect

خب بریم سراغ توضیح تمام ویزگی ها و جزئیات rect البته این ویژگی اکثریت در تمام شکل های konva پیدا میشه

 

نام نوع توضیحات
پیکربندی آبجکت
خواص
نام نوع داده آرگومانت ها یا داده ها توضیحات
cornerRadius عدد <اختیاری > گرد کردن گوشه ها
fill رشته <اختیاری > رنگ زمینه
fillPatternImage تصویر <اختیاری > تصویر زمینه
fillPatternX عدد <اختیاری > شروع زمینه در محور x
fillPatternY عدد <اختیاری > شروع زمینه در محور y
fillPatternOffset آبجکت <اختیاری > آفست در محوریت های x و y (افست همان محدوده شروع ایجاد در شکل است یعنی با تعیین مقدار می تونید بگیید از کجا زمینه شروع بشه )
fillPatternOffsetX عدد <اختیاری > افست زمینه در محور x
fillPatternOffsetY عدد <اختیاری > افست زمینه در محور y
fillPatternScale آبجکت <اختیاری > درواقع تعیین محوریت اندازه نسبت زمینه است مثل از 100 درصد 90 درصد محیط رو پرکنه
fillPatternScaleX عدد <اختیاری > نسبت زمینه در محوریت x
fillPatternScaleY عدد <اختیاری > نسبت زمینه در محوریت y
fillPatternRotation عدد <اختیاری > چرخش زمینه
fillPatternRepeat رشته <اختیاری > در واقع نوع تکرار رو مشخص میکنه که بصئرت عادی بدون تکرار است کد ها این دستور (repeat”, “repeat-x”, “repeat-y”, “no-repeat”. )
fillLinearGradientStartPoint آبجکت <اختیاری > شروع گرادینت خطی در محور x و y
fillLinearGradientStartPointX عدد <اختیاری > شروع گرادینت خطی در محور x
fillLinearGradientStartPointY عدد <اختیاری > شروع گرادینت خطی در محور y
fillLinearGradientEndPoint آبجکت <اختیاری > پایان گرادینت خطی در محور x , y
fillLinearGradientEndPointX عدد <اختیاری > پایان گرادینت خطی در محور x
fillLinearGradientEndPointY عدد <اختیاری > پایان گرادینت خطی در محور y
fillLinearGradientColorStops آرایه <اختیاری > ارایه برای طیف رنگی گرادینت مثل این (0, ‘red’, 0.5, ‘blue’, 1, ‘green’)
fillRadialGradientStartPoint آبجکت <اختیاری > شروع زمینه گرادینت در محور x,y
fillRadialGradientStartPointX عدد <اختیاری > شروع زمینه گرادینت در محور x
fillRadialGradientStartPointY عدد <اختیاری > شروع زمینه گرادینت در محور y
fillRadialGradientEndPoint آبجکت <اختیاری > پایان زمینه گرادینت در محور x,y
fillRadialGradientEndPointX عدد <اختیاری > پایان زمینه گرادینت در محور x
fillRadialGradientEndPointY عدد <اختیاری > پایان زمینه گرادینت در محور y
fillRadialGradientStartRadius عدد <اختیاری > شروع شعاع گرادینت شعاعی
fillRadialGradientEndRadius عدد <اختیاری > پایان شعاع گرادینت شعاعی
fillRadialGradientColorStops آرایه <اختیاری > طیف رنگی گرادینت شعاعی
fillEnabled منطقی <اختیاری > فعال یا غیر فعال بودن زمینه
fillPriority رشته <اختیاری > تعیین زیمنه یعنی رنگ ، تصویر یا گرادینت (color, linear-gradient, radial-graident, pattern)
stroke رشته <اختیاری > رنگ خط دور شکل
strokeWidth عدد <اختیاری > اندازه خط دور شکل
fillAfterStrokeEnabled منطقی <اختیاری > زمینه بعد از خط دور ایجاد شود یانه که بصورت عادی false
hitStrokeWidth عدد <اختیاری > size of the stroke on hit canvas. The default is “auto” – equals to strokeWidth
strokeHitEnabled منطقی <اختیاری > flag which enables or disables stroke hit region. The default is true
perfectDrawEnabled منطقی <اختیاری > جلوگیری از تنظیمات بافر canvs می کند که بصورت عادی true است
shadowForStrokeEnabled منطقی <اختیاری > سایه برای خط دور شکل که بصورت عادی true است
strokeScaleEnabled منطقی <اختیاری > کشیده گی یا مقیاس خط دور شکل که بصورت عادی true است
strokeEnabled منطقی <اختیاری > خط دور شک که بصورت عادی فعال یعنی true است
lineJoin رشته <اختیاری > ملحق شدن خطوط به هم با داده های miter, round,bevel که بصورت عادی miter است
lineCap رشته <اختیاری > کلاهک های خط که در زمان پیچ خوردن خط مشخص می شود دستورات این عملگر butt, round,quare است که بصورت عادی روی butt است
shadowColor رشته <اختیاری > رنگ سایه
shadowBlur عدد <اختیاری > بلور یا تار کننده سایه
shadowOffset آبجکت <اختیاری > x,y افست سایه
shadowOffsetX عدد <اختیاری > افست x سایه
shadowOffsetY عدد <اختیاری > افست y سایه
shadowOpacity عدد اعشاری <اختیاری > شفافیت سایه چیزی بین 0 تا 1
shadowEnabled منطقی <اختیاری > سایه که بصورت عادی true است
dash آرایه <اختیاری > آرایه مقدار فاصله ها و خطوط مثل [29, 20, 0.001, 20]
dashEnabled منطقی <اختیاری > مثل خطوط بین جاده فاصله خط فاصله خط بصورت عادی true است
x عدد <اختیاری > x
y عدد <اختیاری > y
width عدد <اختیاری > طول
height عدد <اختیاری > ارتفاع
visible منطقی <اختیاری > نمایش یا مخفی بودن
listening منطقی <اختیاری > یعنی گوش کردن به رویداد ها مثل اگر روش کلیک شد
id رشته <اختیاری > شناسه یا همان id
name رشته <اختیاری > نام
opacity عدد اعشاری <اختیاری > شفافیت دقت کنید بین 0 تا 1 است
scale آبجکت <اختیاری > مقیاس در محور x,y
scaleX عدد <اختیاری > مقیاس در محور x
scaleY عدد <اختیاری > مقیاس در محور y
rotation عدد <اختیاری > درجه چرخش
offset آبجکت <اختیاری > تنظیم افست در محور x,y
offsetX عدد <اختیاری > قرار دادن افست در محوریت x
offsetY عدد <اختیاری > قرار دادن افست در محوریت y
draggable منطقی <اختیاری > قابلیت درگ ودراپ داشته باشد
dragDistance عدد <اختیاری > زمانی که کشیدن به فاصله ای رسید فانکشن اجرا می شود
dragBoundFunc عملگر <اختیاری > زمانی که درگ شد یعنی شکل کشیده شد فاکنشن را اجرا می کند

 

خب با توجه به جدولی که دید کافی فقط دستور را برای ساخت شکل تغییر دهیم یعنی

بجای rect از Circle برای ساخت دایره استفاده میشه

خوب تفاوت هاشون چیه؟  توی دایره چیزی به نام radius داره که  شعاع دایره تعیین می کنه یعنی هرچقدر بیشتر باشه شعاع دایره بزرگ تر میشه

نمونه کد چنین چیزی خواهد شد

var circle = new Konva.Circle({
        x: stage.width() / 2,
        y: stage.height() / 2,
        radius: 70,
        fill: 'red',
        stroke: 'black',
        strokeWidth: 4,
      });

شکل بعدی Ellipse که ویژگی خاصش اینه که شما محور x , y شعاع رو تایین می کنید یعنی این کد

var oval = new Konva.Ellipse({
        x: stage.width() / 2,
        y: stage.height() / 2,
        radiusX: 100,
        radiusY: 50,
        fill: 'yellow',
        stroke: 'black',
        strokeWidth: 4,
      });

شکل بعدی Wedge یا بخشی از دایره است  که سه  ویژگی اصلی داره یک شعاع radius و دوم زاویه angle که زاویه جدا شده از دایره رو نشون میده و سوم rotation که محور چرخش رو نشون میده مثلا از 360 درجه شما می گید در 90 درجه یه زاویه 60 درجه ایجاد کن

به مثال دقت کنید  که یک زاویه 60 با شعاع 70 و در محوریت -120 درجه ایجاد کرده

var wedge = new Konva.Wedge({
        x: stage.width() / 2,
        y: stage.height() / 2,
        radius: 70,
        angle: 60,
        fill: 'red',
        stroke: 'black',
        strokeWidth: 4,
        rotation: -120,
      });

خوب به ساخت خط رسیدیم بصورت عادی خط  با Konva.Line() ایجاد میشه  و ویژگی ویژه در ایجاد نقاط مختلف بر ایجاد خط است points خوب به مثال زیر دقت کنید

var redLine = new Konva.Line({
points: [5, 70, 140, 23, 250, 60, 300, 20],
stroke: 'red',
  strokeWidth: 15,
  lineCap: 'round',
  lineJoin: 'round',
  });

خوب دقت کنید مبنید یک سری عدد بصورت آرایه جلوی points  قرار گرفتن  که اگر بخوایم اونو بخونید به این صورت میشه [x1, y1, x2, y2, x3, y3] یعنی شروع خط x = 5 , y = 70  و بهمین ترتیب تا پایان خط  که میشه  x = 300 , y = 20  بقیه ویژگی ها مثل  stroke , strokeWidth ,lineCap ,lineJoin توی جدول توضیح اومده 

 

یه سبک دیگه از استفاده از لاین وجود داره اونم اینه که بصورت Polygon استفاده بشه یعنی اول و آخر خط به هم وصل میشه با گزینه closed: true

مثل مثال زیر

var poly = new Konva.Line({
points: [23, 20, 23, 160, 70, 93, 150, 109, 290, 139, 270, 93],
fill: ‘#00D2FF’,
stroke: ‘black’,
strokeWidth: 5,
closed: true,
});

شما می تونید خط هارو بجای سخط بودن بصورت نرم بسازید  با این کد tension به مثال دقت کنید

var redLine = new Konva.Line({
        points: [5, 70, 140, 23, 250, 60, 300, 20],
        stroke: 'red',
        strokeWidth: 15,
        lineCap: 'round',
        lineJoin: 'round',
        tension: 1,
      });

س

پیام بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

چهارده − چهار =