30/09/2018, 19:30

Làm thế nào để lấy được vị trí của 1 control bên trong parentcontrol?

Mình tạo 1 hàm di chuyển control trong PictureBox. Khi di chuyển nó sẽ lưu vị trí (x, y) của control đó.

Giống như thế này:

Nhưng vấn đề ở chỗ kết quả mình hiển thị lại như thế này:

Như tấm hình động phía trước, mình drag text - control label vào giữa tấm hình

Nhưng kết quả trả về thằng dữ liệu nó không nằm giữa màn hình.
Mình thấy rằng nó bằng đúng pixel ở trên PictureBox.
Nghĩa là muốn đúng y chang phải để tấm hình bằng độ rộng với ảnh gốc rồi kéo nó mới giống.
Trong khi màn hình mình phải có nhiều control khác, nên để cái đó thumbail để dễ nhìn với biết kết quả nó sẽ như thế nào.

Mình đã thử đặt thuộc tính PictureBox thành StretchImage và AutoSize nhưng không được.

Đây là đoạn code mình lấy vị trí và vẽ text lên trên PictureBox. Ở đây thằng PictureBox đóng vai thằng cha, tất cả control mình đều add vào nó.

public PositionControl CtrlPos = new PositionControl();
private void control_MouseMove(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Left)
    {
        Control control = (Control)sender;
        Point nextPosition = new Point();
        nextPosition = picPreview.PointToClient(MousePosition);
        nextPosition.Offset(mouseX, mouseY);
        control.Location = nextPosition;
        CtrlPos.x = nextPosition.X;
        CtrlPos.y = nextPosition.Y;
        Invalidate();
    }
}

Trong class mình dùng nó để vẽ chữ vào nó, tại tọa độ Point(x,y).

   g.DrawImage(
    DrawText(image, new Font(cbxFont.Text, fontSize), colorInput,
        Color.Transparent),
    new Point(CtrlPos.x, CtrlPos.y));
// g is Graphics object.
Bài liên quan
0