توی این بخش می خوام به شما توضیح بدم که چطور می تونید از طریق 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 شعاع رو تایین می کنید یعنی این کد
شکل بعدی Wedge یا بخشی از دایره است که سه ویژگی اصلی داره یک شعاع radius و دوم زاویه angle که زاویه جدا شده از دایره رو نشون میده و سوم rotation که محور چرخش رو نشون میده مثلا از 360 درجه شما می گید در 90 درجه یه زاویه 60 درجه ایجاد کن
به مثال دقت کنید که یک زاویه 60 با شعاع 70 و در محوریت -120 درجه ایجاد کرده
خوب دقت کنید مبنید یک سری عدد بصورت آرایه جلوی points قرار گرفتن که اگر بخوایم اونو بخونید به این صورت میشه [x1, y1, x2, y2, x3, y3] یعنی شروع خط x = 5 , y = 70 و بهمین ترتیب تا پایان خط که میشه x = 300 , y = 20 بقیه ویژگی ها مثل stroke , strokeWidth ,lineCap ,lineJoin توی جدول توضیح اومده
یه سبک دیگه از استفاده از لاین وجود داره اونم اینه که بصورت Polygon استفاده بشه یعنی اول و آخر خط به هم وصل میشه با گزینه closed: true