ابزار نقاشی چند ضلعی

272

در این مقاله به یک ابزار جمع و جور اندروید برای ساخت و جمع کردن چند ضلعی های منظم با امکاناتی نظیر :

  • تعداد ضلع (≥ 3)
  • مختصات مرکز
  • شعاع بیرونی (مرکز به رأس)
  • گرد کردن گوشه ها
  • ...

پرداخته شده است.

گام اول : افزودن PolygonDrawingUtil


PolygonDrawingUtil را به عنوان dependency در فایل build.gridle خود پیاده سازی کنید.

        
            dependencies {
               implementation 'com.stkent:polygondrawingutil:1.1.0'
            }
        
    

گام دوم : ساخت کلاس PolygonView


در پروژه خود یک کلاس به اسم PolygonView ایجاد کنید و کد های زیر را در آن جایگذاری کنید .

        
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Path;
import android.support.annotation.Nullable;
import android.support.v4.content.ContextCompat;
import android.util.AttributeSet;
import android.view.View;
import com.stkent.polygondrawingutil.PolygonDrawingUtil;
import static android.graphics.Paint.ANTI_ALIAS_FLAG;

public class PolygonView extends View {

    private final PolygonDrawingUtil polygonDrawingUtil = new PolygonDrawingUtil();
    private final Paint polygonFillPaint = new Paint(ANTI_ALIAS_FLAG);
    private final Paint polygonStrokePaint = new Paint(ANTI_ALIAS_FLAG);
    private final float strokeWidth = getResources().getDimension(R.dimen.stroke_width);

    private int numberOfSides = 3;
    private float cornerRadius = 120;
    private float rotation = 0;
    private float scale;

    private final Path strokePath = new Path();

    public PolygonView(final Context context, @Nullable final AttributeSet attrs) {
        super(context, attrs);

        polygonFillPaint.setColor(ContextCompat.getColor(context, R.color.colorAccentTranslucent));
        polygonFillPaint.setStyle(Paint.Style.FILL);

        polygonStrokePaint.setColor(ContextCompat.getColor(context, R.color.colorAccent));
        polygonStrokePaint.setStrokeWidth(strokeWidth);
        polygonStrokePaint.setStyle(Paint.Style.STROKE);
    }

    @Override
    protected void onDraw(final Canvas canvas) {
        super.onDraw(canvas);

        final float centerX = getWidth() / 2;
        final float centerY = getHeight() / 2;
        final float radius = scale * (getWidth() / 2 - strokeWidth);

        // Method 1 (simpler for direct drawing):
        polygonDrawingUtil.drawPolygon(
                canvas,
                numberOfSides,
                centerX,
                centerY,
                radius,
                cornerRadius,
                rotation,
                polygonFillPaint);

        // Method 2 (allows polygon Path post-processing if desired):
        polygonDrawingUtil.constructPolygonPath(
                strokePath,
                numberOfSides,
                centerX,
                centerY,
                radius,
                cornerRadius,
                rotation);

        canvas.drawPath(strokePath, polygonStrokePaint);
    }

    public int getNumberOfSides() {
        return numberOfSides;
    }

    public void setNumberOfSides(final int numberOfSides) {
        this.numberOfSides = numberOfSides;
        invalidate();
    }

    public void setCornerRadius(final float cornerRadius) {
        this.cornerRadius = cornerRadius;
        invalidate();
    }

    public void setPolygonRotation(final float rotation) {
        this.rotation = rotation;
        invalidate();
    }

    public void setScale(final float scale) {
        this.scale = scale;
        invalidate();
    }

}

        
    

گام سوم : چگونگی استفاده


در کد xml لایه اکتیویتی و یا فرگمنت خود کد زیر را وارد نمایید .

        
             < your_package_name.PolygonView
                    android:id="@+id/polygon_view"
                    android:layout_width="wrap_content"
                    android:layout_height="0dp"
                    android:layout_weight="1" />
        
    

حال در اکتیویتی یا فرگمنت خود polygon_view رو find کرده و با استفاده از متد های آن تعداد اضلاع ، مقیاس ، شعاع گوشه ها و ... را تعیین کنید .

پیوست ها :
  • این مقاله دارای پیوست نمی باشد.
loder | اُکسیما
»» نویسنده مقاله
حسین رئیسی | اُکسیما

حسین رئیسی
»» پشتیبانی مقاله

تیم پشتیبانی اُکسیما به صورت 24 ساعت در هر زمان و مکان، پاسخگوی تمامی سوالات و ابهامات شما در مورد این مقاله خواهند بود. بدین منظور شما می توانید از طریق روش های زیر از پشتیبانی فنی این مقاله برخوردار گردید. تیم پشتیبانی این اطمینان خاطر را به شما دانشجویان گرامی خواهند داد که در سریع ترین زمان ممکن پاسخگوی شما عزیزان باشند.


به اشتراک بگذارید ...

دوستان و همراهان گرامی : آیا تمایل دارید این مقاله را با دوستان و آشنایان خود در تلگرام به اشتراک بگذارید؟

مقاله های پیشنهادی

Flutter و ReactNative ؛ کدام یک دوست داشتنی تر است؟ با توجه به تقاضاهای زیادی که برای برنامه های تلفن همراه وجود دارد، تعداد زیادی از کسب و کارها و استارتاپ ها، به دنبال توسعه برنامه های موبایل می باشند .

حسین رئیسی

609

ماتیس یک ابزار برای انتخاب تصویر و ویدیو در اندروید است. شما می توانید در اکتیتویتی و یا فرگمنت از آن استفاده کنید - انتخاب تصاویر از جمله JPEG، PNG، GIF و فیلم ها از جمله MPEG، MP4- تم های مختلف را اعمال کنید، از جمله دو تم ساخته شده و تم سفارشی- بارگذاری تصاویر مختلف- قوانین فیلتر سفارشی را تعریف کنید

حسین رئیسی

385

شما ممکن است شنیده باشید که پایتون محبوبیت زیادی را به دست آورده است، اما آیا می دانستید که در حال حاضر محبوب ترین زبان آموزشی و مقدماتی در دانشگاه های آمریکا است ؟ همینطور این زبان ، با توجه به بررسی IEEE ، چهارمین زبان محبوب دنیا بعد از زبان های کلاسیک و قدیمی جاوا، C و C ++ است ؟

حسین رئیسی

424