我正在为学校做一项作业,我无法弄清楚我需要用来解决这个问题的逻辑。我希望你们中的一些人能为我指出正确的方向。
我有一些类来绘制简单的形状:
根据赋值,DrawingItem
下的每个延迟类都需要一个画()
方法才能画特定的(Oval
,Spline
etc...)独立于GraphicsContext
。对于Oval
,我的猜测是这个方法类似于:
public void paint(Graphics g){
g.setColor(super.getColor());
g.drawOval(
(int) dw.getAnchor().getX(), (int) dw.getAnchor().getY(),
(int)this.width, (int)this.height
);`
}
扩展类图显示了一个接口 IPaintable
,我为每个形状创建了一个方法。JavaFX端(DrawingTool
)实现了这个接口及其所有方法。这些方法希望 shape 对象作为参数。我使用这些方法在javaFX中绘制形状,再次是椭圆形示例:
strokeOval(
oval.getHeight(), oval.getWidth(), oval.getAnchor().getX(), oval.getAnchor().getY()
);
我的主要问题是:
感谢fabian,他为我指出了这个方向,真的帮了我很多忙(因为清理了我的文章,提高了可读性)。现在我已经实现了这些指针,它们似乎很有效。使用Drawingtool中的draw()方法,我调用Drawing类中的paint(IPaintable paintable)方法,该方法循环遍历该类中的drawingitems列表,如下所示:
public void paint(IPaintable paintable){
for (DrawingItem test : drawingitems){
if (test instanceof Oval){
paintable.paintOval((Oval) paintable);
} else if (test instanceof Image){
paintable.paintImage((Image) paintable);
这应该画出形状,看起来有效。最后一部分是将它们添加到在 DrawingTool 类中初始化的画布中。我似乎不知道如何做到这一点。我试图在使用绘图项浏览列表时添加它们,但这似乎不起作用(或者我处理错了)。
类图中有两种设计模式易于识别:
IPaintable
应该是GUI绘制操作的包装器(Facade),允许您独立于所使用的GUI库使用类图1中的类。您只应在绘画
方法中使用 IPaintable
提供的方法。
类图1中的类是命令模式的命令部分;DrawingTool
是调用者/客户端,IPaintable
是接收器。
DrawingTool
类应该包含这样的代码:
IPaintable paintable = new JavaFXPaintable(canvas.getGraphicsContext());
并像这样使用它,如果需要重新绘制绘图:
drawing.paint(paintable);
由于可以使用IPaintable
的方法绘制椭圆形
,因此它应该实现如下图
画:
public void paint(IPaintable paintable) {
paintable.setColor(color);
paintable.paintOval(this);
}
Polygon
将使用ipainable
的
paintLine
methods传递给它的paint
,用于绘制本身,drawing。绘制
将清除i可维护
并绘制所有项
等。
在<code>JavaFxPaintable
public void paintOval(Oval oval) {
Point anchor = oval.getAnchor();
graphics.strokeOval(anchor.getX(), anchor.getY(), oval.getWidth(), oval.getHeight());
}
若<code>锚
使用直线段工具绘制直线段 当您需要一次绘制一条直线段时请使用直线段工具。有关使用直线段工具的视频,请参阅 www.adobe.com/go/vid0036_cn。 1 选择直线段工具 。 2 执行下列操作之一: 将指针定位到希望线段开始的地方,然后拖动到希望线段终止的地方。 在希望线段开始的地方单击,并指定线的长度和角度。如果您希望以当前填充颜色对线段填色,请选择 “线段填色 ”。然后单击 “确定
通过 Entity 添加形状 先来看一个添加立方体的例子 var viewer = new Cesium.Viewer('cesiumContainer'); var redBox = viewer.entities.add({ name : 'Red box with black outline', position: Cesium.Cartesian3.fromDegrees(-107
绘制矩形 与其它图形库不同,LCUI 提供的图形 API 只支持矩形这一种形式的图形绘制,不支持基于路径来绘制复杂图形。因此,对于其它复杂的图形,你需要手动编写代码填充像素来绘制。 LCUI 提供了一种绘制矩形的方法: int Graph_FillRect(LCUI_Graph *graph, LCUI_Color color, LCUI_Rect *rec
问题内容: 我有一个包含3个JPanel的JFrame;选项,菜单,画布。在选项中,有许多表示形状的JButton。目的是单击形状(例如矩形)的JButton,然后在画布上单击任意位置,然后将在此处绘制形状。由于某种原因,形状并不总是被绘制,仅当我单击画布左上方区域中的某个位置时才绘制形状。此外,形状似乎会随我单击的位置而随机改变大小。 这是我的一些代码片段,这可能是一个小错误,但是我似乎找不到它
我试图用DXUT11画一个简单的三角形,但是我在窗口中看不到三角形。 我努力工作,但仍然找不到问题所在-_- 我检查了D3D函数的每个返回值,它们都返回了S_OK<我可以看到我的窗口显示出来,背景色是我设置为清除窗口的颜色,因此看起来d3d设备是当前创建的,并且后缓冲区被渲染到窗口,但是黄色三角形在哪里 T\u T。。。。。。。。。。。。。。。 我的代码如下:(为了简化问题,我已经删除了所有的检查
绘制直线 当您需要一次绘制一条直线段时请使用直线段工具。有关帮助您学习如何使用“直线段”工具的学习游戏,请观看如何使用直线工具。 选择直线段工具 。 执行下列操作之一: 将指针定位到希望线段开始的地方,然后拖动到希望线段终止的地方。 单击希望线段开始的地方。在对话框中,指定线段的长度和角度。如果您希望以当前填充颜色对线段填色,请选择线段填色。然后,单击确定。直线段工具选项 绘制弧线 单击并按住直线