【发布时间】:2019-10-29 12:54:47
【问题描述】:
我正在寻找一块一块地绘制矢量,每次添加新块时都会重新绘制矢量。我有一个字符串,其中包含循环通过的最终 svg 的每一段路径(由字符串中的“;”描述)。此外,我添加了strokeLine 作为进度条来跟踪绘制了多少矢量。
public void renderObject(GraphicsContext playGraphics, Canvas toUpdate)
{
playGraphics.beginPath();
String toAppend = "M 215 256; L 215 256; L 215 256; L 215 256; L 225 241; L 234 231; L 246 223; L 266 214; L 284 208; L 309 204; L 340 200; L 378 199; L 416 199; L 444 199; L 473 203; L 485 206; L 496 211; L 506 218; L 510 224; L 513 233; L 515 243; L 516 257; L 512 270; L 502 285; L 493 298; L 483 308; L 476 315; L 472 318; L 469 320; L 468 320; L 468 320; L 468 320; L 468 317; L 472 309; L 480 300; L 492 293; L 510 287; L 535 283; L 557 282; L 580 283; L 593 287; L 607 295; L 623 311; L 634 333; L 640 355; L 642 396; L 639 430; L 624 467; L 602 508; L 582 536; L 557 563; L 524 585; L 490 602; L 464 611; L 432 619; L 420 621; L 404 622; L 393 622; L 383 621; L 376 620; L 372 618; L 365 610; L 360 598; L 358 578; L 357 554; L 361 514; L 371 493; L 386 463; L 412 422; L 432 395; L 456 362; L 480 329; L 506 299; L 533 271; L 560 247; L 600 213; L 620 194; L 626 189; L 629 184; L 630 182; L 632 178";
for (int i=0; i < toAppend.split(";").length; i++)
{
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
playGraphics.clearRect(0, 0, toUpdate.getWidth(), toUpdate.getHeight());
playGraphics.strokeLine(50, 50, 50+10*i, 50);
playGraphics.appendSVGPath(toAppend.split(";")[i]);
playGraphics.stroke();
}
}
但是,一旦在实时画布上实现,矢量就不会被绘制,只有进度条可见。考虑到渲染完成后,如果再次使用graphicsContext 对象并调用另一个playGraphics.stroke();,矢量图像可以完整地显示在画布上,这是非常奇怪的。
为什么playGraphics.stroke(); 运行失败,而playGraphics.strokeLine 运行正常?
指示正在渲染的进度条,但未显示矢量
指示正在渲染的进度条,但未显示矢量
矢量终于显示出来了,但只是在画布上画了一个点,重新调用playGraphics.stroke();
【问题讨论】:
标签: java svg javafx rendering vector-graphics