Tüm strokun, içeride ve yarısı dıştan inmenin yarısı yerine Yolun içinde olduğu, strok genişliği 5 olan Yol kullanılarak tanımlandığı gibi bir şekil çizmek istiyorum.Android - içerideki kontur
sayesinde
Carl
Tüm strokun, içeride ve yarısı dıştan inmenin yarısı yerine Yolun içinde olduğu, strok genişliği 5 olan Yol kullanılarak tanımlandığı gibi bir şekil çizmek istiyorum.Android - içerideki kontur
sayesinde
Carl
O inme (dışarıda yani, içeride, merkezi veya) pozisyonunu kontrol edemez görünüyor. örneğin çizerken Android Paint stroke width positioning
Çözümümün çizgi genişliğini dengeleniyor,
final RectF rectF = new RectF(halfStrokeWidth, halfStrokeWidth, width - halfStrokeWidth, height - halfStrokeWidth);
canvas.drawRoundRect(rectF, roundX, roundY, paint);
Yardım için CornerPathEffect sınıfını kullanabilirsiniz: için daha fazla bilgi için bkz! Örnek olarak yuvarlak bir şekil çizmek.
Canvas.drawRoundRect() yöntemini kullanarak radiuslu bir arka plan rengi çizerken ve Style.FILL boya setini ayarlarken yuvarlak bir yuvarlak biçim elde edebilirsiniz. Daha sonra Style.STROKE ile bir yuvarlak kenarlı kenarlık çizmek ve aynı yöntemi kullanarak boya ayarının genişliğini, bir kenarlık alabilirsiniz.
kodu:
en CornerPathEffect deneyelim:, bazı arka plan ve sınırı arasında ofset etmiştir istediğim biri Şimdi benziyor
mBackgroundRectF.set(0, 0, mWidth, mHeight);
canvas.drawRoundRect(mBackgroundRectF, mRadius, mRadius, mBackgroundPaint);
// edge ajustment because paint stroke style is center align
float edge = mBorderWidth/2;
mBackgroundRectF.set(edge, edge, mWidth - edge, mHeight - edge);
canvas.drawRoundRect(mBackgroundRectF, mRadius, mRadius, mBorderPaint);
değil
mBackgroundRectF.set(0, 0, mWidth, mHeight);
canvas.drawRoundRect(mBackgroundRectF, mRadius, mRadius, mBackgroundPaint);
// edge ajustment because paint stroke style is center align
float edge = mBorderWidth/2;
mBackgroundRectF.set(edge, edge, mWidth - edge, mHeight - edge);
// use CornerPathEffect and then use drawRect() method
mBorderPaint.setPathEffect(new CornerPathEffect(mRadius/2));
canvas.drawRect(mBackgroundRectF, mBorderPaint);
Şimdi doğru görünüyor:
Ağrı strok genişliği problemi çözebilir! – YXP
kullanın Canvas#clipPath(Path, Op)
. Ancak, Android 3.0 ve reintroduced in 4.3 sürümlerinde bir donanım hızlandırılmış tuvalde bir yolun kırpılmasına yönelik desteğin kaldırıldığını unutmayın. Görünüşe göre 3.0-4.2 için bir workaround vardı, ama bunu test etmenin bir yolu yok.
Sorunu anlamıyorum, daha spesifik olabilir misiniz? Ne demek "tüm inme yarısı içeride ve yarısı dışarıdan değil, yolun içindedir" derken ne demek istiyorsun? – Marek
Siyah renkte 10 piksel genişliğinde bir konturlu bir şekil çiziyorum ve daha sonra 5 piksel genişliğinde kırmızı renkte bir kontur ile şekil çiziyorum, sonra kırmızı yol siyah yolun genişliğinin yarısı olacak ve ortada, inme yarısı şekil sınırı içinde olacak ve yarısı dışarıda olacaktır. Bunun yerine istediğim, tüm konturun şekil sınırının içinde olması. Yukarıdaki örnekte, bu kırmızı konturun siyah konturun bir tarafında olacağı anlamına gelecektir, kenar sınırına en yakın olan taraf – user2430147