Estou tendo um problema com anotações de seta no meu componente ImageDisplay. Quando crio anotações de seta sequencialmente, as coordenadas da seta estão corretas. No entanto, se eu primeiro criar um grupo de anotações e depois adicionar anotações de seta a esse grupo, as coordenadas da seta ficarão incorretas. Parece que o sistema de coordenadas do grupo de marcadores pode não corresponder ao sistema de coordenadas usado pelo ImageDisplay.
O que eu tentei:
- Gerar marcadores de seta um por um funciona conforme o esperado.
Image img := RealImage("RImg",4,256,256)
img.ShowImage()
ImageDisplay img_disp = img.ImageGetImageDisplay(0)
ImageDocument img_doc = img.ImageGetOrCreateImageDocument()
Number radius = 50
Number cx = 128
Number cy = 128
Number flag = 1
for (Number count = 0 ; count < 4 ; count++)
{
Number phi = count * 2 * Pi()/ 4
Number px = round(cx+radius*Cos(phi))
Number py = round(cy+radius*Sin(phi))
Component arrow = NewArrowAnnotation(cy, cx, py, px)
img_disp.ComponentAddChildAtEnd(arrow)
}
- Criar primeiro um grupo de marcadores e depois adicionar marcadores de seta resulta em coordenadas confusas.
Image img := RealImage("RImg",4,256,256)
img.ShowImage()
ImageDisplay img_disp = img.ImageGetImageDisplay(0)
ImageDocument img_doc = img.ImageGetOrCreateImageDocument()
Component arrows = NewGroupAnnotation()
Number radius = 50
Number cx = 128
Number cy = 128
for (Number count = 0 ; count < 4 ; count++)
{
Number phi = count * 2 * Pi()/ 4
Number px = round(cx+radius*Cos(phi))
Number py = round(cy+radius*Sin(phi))
Result(py + ", " + px + "\n")
Component arrow = NewArrowAnnotation(cy, cx, py, px)
arrows.ComponentAddChildAtEnd(arrow)
}
img_disp.ComponentAddChildAtEnd(arrows)
Questões:
- O que poderia causar a discrepância de coordenadas entre o grupo de marcadores e o ImageDisplay?
- Como posso garantir que o grupo de marcadores use o mesmo sistema de coordenadas do ImageDisplay ao adicionar marcadores de seta?
Os detalhes de como os sistemas de coordenadas são herdados por Componentes filhos de vários tipos são muito obscuros para mim e não encontrei nenhum lugar na documentação do DM que explique isso completamente. Talvez outra pessoa possa nos apontar uma explicação mais clara.
No entanto, parece estar claro que anotações de grupo não têm um sistema de coordenadas bem definido próprio e, portanto, adicionar novas anotações (anteriormente não colocadas) a um grupo geralmente não produz o resultado desejado. A melhor abordagem parece ser primeiro colocar novas anotações no ImageDisplay desejado e, em seguida, adicionar essas anotações colocadas a um grupo para atingir a associação desejada de Componentes filhos, como segue: