Как я могу создать объект в wxPython, используя FloatCanvas и NavCanvas, который обновляется с увеличением? - PullRequest
0 голосов
/ 23 сентября 2019

Я хочу сделать масштаб легенды для карты.Масштаб должен был бы изменяться в зависимости от уровня масштабирования.

Например, при увеличении 100% может быть прямоугольник с текстом рядом с ним, который говорит «100 м».Когда масштаб изменяется на 200%, текст должен выглядеть следующим образом: «50 м».

Было бы замечательно, если бы уже было что-то встроенное для этого;но если нет, то мне кажется, что мне нужно каким-то образом получить уровень масштабирования и границы текущего представления, чтобы перерисовать объект.

Моя текущая реализация карты с NavCanvas.В моем случае чтение графических файлов уместно.Вот часть кода:

    ...
        # Add Canvas
        self.nav_canvas = NavCanvas.NavCanvas(self, -1,
                                     size=(640, 480),
                                     ProjectionFun=None,
                                     Debug=0,
                                     BackgroundColor="#777777")

        self.canvas = self.nav_canvas.Canvas

    ...
    def load_base_image(self):

        self.image = skimage.io.imread("imported/base/" + self.image_name + ".png")
        image_obj = wx.Image("imported/base/" + self.image_name + ".png")

        image = FloatCanvas.ScaledBitmap2(image_obj, 
                                          XY = (0,0), 
                                          Height = image_obj.GetHeight(),
                                          Position = 'tl')
        self.canvas.AddObject(image)
        self.canvas.Draw()
        self.canvas.ZoomToBB()

Какой будет самый простой подход?

...