我正在开发技术绘图应用程序,我需要添加一些工具来绘制线条,圆形,矩形和角落。现在我可以绘制线条和自由绘画,但是我无法绘制圆形,矩形和角落。我在很多网站中发现了如何绘制它,但是静态的,我的意思是,在你预先设置的位置或你触摸的位置绘制形状,但我需要知道如何绘制,例如,在位置I上的一个圆圈触摸并使它比我分开我的手指更大。我希望你明白我的意思。绘制形状动态
绘制形状动态
回答
您可以有两个变量x和y,然后每次触摸屏幕时将x和y设置为该值,同时绘制绘制坐标为x和y的圆。
如果您正在绘制并且只是想保留一个画圆,您可以绘制该圆并将其添加到x和y的画布中,然后在下一次触摸屏幕时将在x上绘制新的圆y和旧的将保持着色。
您使用的是Canvas
?如果是这样,你可以找出如何做到这一点here (Canvas documentation)和here (Bitmap documentation)。根据您的情况,您可以创建一个新的Bitmap
并将其分配给Canvas
,然后在Canvas
上绘制并在位图内部,您将获得所需的圆形和其他形状,并在下一个绘制框中绘制新形状,并且更改将保留。
编辑:为了使动态半径遵循此逻辑,当您触摸屏幕时,将x和y设置到该点(圆心),同时在屏幕上移动手指,计算半径与x和y,如上图所示,抬起手指时应用位图上的图形。
一些代码:
public boolean onTouchEvent(MotionEvent e)
{
switch (e.getAction())
{
case MotionEvent.ACTION_DOWN:
x = (int) event.getX();
y = (int) event.getY();
break;
case MotionEvent.ACTION_MOVE:
//If I'm not wrong this is how to calculate radius,
//I'm at work and can't test this now, you can use your way
int distanceX = (int) event.getX() -x;
int distanceY = (int) event.getY() -y;
radius = sqrt(distanceX *distanceX + distanceY *distanceY);
break;
case MotionEvent.ACTION_UP:
//Draw circle inside your bitmap here
//This is like a flag to notify the program that no new shape is being drawn
x = -1;
break;
}
public void draw(Canvas canvas)
{
canvas.drawBitmap(myBitmap, 0, 0, null);
//A new shape is being drawn
if (x != -1)
//In here you place a switch to decide which shape you are drawing
//for this example i assume circle
canvas.drawCircle(radius, x, y, paint);
}
当你抬起手指的新圈子应该在你的位图画,所以你不必添加额外的代码为每个新的循环。编辑2:我将用我描述的方法Bitmap
和Canvas
添加更多代码。
Bitmap myBitmap;
Canvas myCanvas;
//Constructor
public myActivity(Bundle bundle) //or whatever your constructor is
{
myBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
myCanvas = new Canvas(myBitmap);
}
现在什么,你的“myCanvas”画将被应用到“设备无关”,当ACTION_UP
激活画圆圈这是对draw
功能绘制“myCanvas”。
case MotionEvent.ACTION_UP:
myCanvas.drawCircle(radius, x, y, paint);
x = -1;
break;
我正在使用画布。我正在阅读,现在我可以绘制圆圈,但我想用动态半径来绘制它。我读taht [链接](http://stackoverflow.com/questions/8974088/how-to-create-a-resizable-rectangle-with-user-touch-events-on-android/17807469#17807469),但我不能绘制没有球的矩形。任何想法? – malaka
@AbelSuviri我编辑了我的答案和更多解释 – TomTsagk
我测试了你的代码,并且改变了它以适应我的代码,但它不能正常工作。我在屏幕左侧出现一个大圆圈,我无法将它移动到位置,当我停止触摸屏幕时,我在我触及的位置出现一个小圆圈,大圆圈消失 – malaka
- 1. Java - 绘制动态形状轮廓
- 2. 创建js克隆一个形状与动态绘制图形
- 3. 绘制动态图形
- 4. 动态绘制弧形
- 5. 绘制动态图形?
- 6. 形状可绘制
- 7. 多态形状类绘制最近创建的任何形状?
- 8. Jsplump动态绘制状态机图
- 9. 绘制形状与JavaScript - 形状问题
- 10. Xamarin.Android形状不绘制到活动
- 11. 绘制和移动形状问题
- 12. 拖动以绘制更多形状
- 13. 移动后未绘制SFML形状
- 14. 使用Android中的动态内容绘制自定义形状
- 15. 如何动态更改可绘制的颜色和形状?
- 16. 如何在flex中创建/绘制动态形状4
- 17. 点击JPanel绘制形状
- 18. 绘制边框形状javafx
- 19. 用圆圈绘制形状
- 20. 在XAML中绘制形状?
- 21. 绘制一个Rosetta形状
- 22. 用css绘制形状
- 23. 使用TouchesMoved绘制形状
- 24. 如何绘制形状
- 25. 绘制形状使用龟
- 26. 绘制形状GLUT_DOUBLE模式
- 27. 用于绘制形状
- 28. 形状绘制编程
- 29. Paper.js不绘制形状
- 30. JavaFX延迟绘制形状
你应该阅读手势 – runDOSrun
我不知道如何实现手势绘制。你知道任何教程或什么?谢谢。 – malaka