我正在尝试在图像上绘制矩形,但效果很好,但是我想从用户触摸手指的点开始绘制矩形,应该将手指触摸作为中间点并在其周围绘制矩形。我尝试使用drawRect()方法甚至常规路径。这是我的代码。
GeneralPath pp= new GeneralPath();
pp.moveTo(currentLine.startX, currentLine.startY-offset / 2);
pp.lineTo(currentLine.startX, currentLine.startY + offset /2);
pp.lineTo(currentLine.startX + offset, currentLine.startY + offset /2);
pp.lineTo(currentLine.startX + offset, currentLine.startY -offset /2);
pp.lineTo(currentLine.startX, currentLine.startY-offset / 2);
pp.closePath();
g.drawShape(pp, stroke);
//tried even this method
g.drawRect(currentLine.startX, currentLine.startY , currentLine.startX , currentLine.startY, currentLine.girth);
这里的当前线点不过是手指触摸的坐标。
为了绘制圆圈,我在代码中使用了drawArc()方法
// to draw circle
g.drawArc(currentLine.startX, currentLine.startY , currentLine.startX , currentLine.startY, 0, 360);
但是在这种情况下如何更改笔划厚度?甚至在用户触摸屏时,我还需要从中心点绘制。
在两种情况下,我都不想拖动和绘制形状。每当用户触摸屏时,都需要以触摸为中心来绘制所选图像,并且不应在图像边界之外绘制形状。
任何对此的解决方案将是有帮助的。谢谢
答案 0 :(得分:0)
始终在0,0处绘制矩形或形状,然后使用“平移”将其放置在屏幕中。它使代码更简单。因此:
g.drawRect(0, 0, fourMM, fourMM);
现在,您要向下移动指针以确定X / Y,然后拖动以调整大小。只需添加这些:
g.translate(pointerInitialX, pointerInitialY);
g.scale(factorW, factorH);
g.drawRect(0, 0, fourMM, fourMM);
g.resetAffine();
重置仿射可恢复原始翻译。我建议注释掉比例,然后研究“感觉”正确的比率公式。这需要一些差异很大的技巧。