كيفية إنشاء دائرة يمكن تغيير حجمها باستخدام أحداث لمس المستخدم؟

StackOverflow https://stackoverflow.com//questions/23057037

  •  23-12-2019
  •  | 
  •  

سؤال

أحاول إنشاء شكل دائرة سيتم تغيير حجمه onTouchEvent.

لقد تابعت مستطيل يمكن تغيير حجمه منشورًا، ولكن أعتقد أنه بسبب نقص المعرفة بالرياضيات، لم أتمكن من إنشاء دائرة يمكن تغيير حجمها.

لقد حاولت التغيير

canvas.drawRect(
    left + colorballs.get(0).getWidthOfBall() / 2,
    top + colorballs.get(0).getWidthOfBall() / 2, 
    right + colorballs.get(2).getWidthOfBall() / 2, 
    bottom + colorballs.get(2).getWidthOfBall() / 2, paint);

ل قماش. رسم دائرة ();إنها تخلق الدائرة ولكن ليس تمامًا ما أردت.

هل يمكن أن تخبرني هل تم تنفيذ أي شيء مثل هذا بالفعل أو ما هي النقاط التي يجب أن أتبعها لتحويل هذا المثال المستطيل إلى دائرة يمكن تغيير حجمها.

هل كانت مفيدة؟

المحلول

إذن مركز الدائرة سيكون:

float cx = (left + right) / 2f; 
float cy = (top + bottom) / 2f; 

-- واضح تماما.يمكن حساب نصف القطر باستخدام Math.hypot():

float radius = Math.hypot(top - bottom, right - left) / 2f;

وبالتالي، لدينا مركز ونصف قطر لرسم دائرة:

drawCircle(cx, cy, radius, paint);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top