Tôi vẽ biểu đồ trên điều khiển, nhưng 0,0 là ở góc trên cùng bên trái của điều khiển. Có cách nào lật các tọa độ sao cho 0,0 nằm ở góc dưới bên trái của điều khiển không?lật tọa độ khi vẽ để điều khiển
Trả lời
Nếu bạn đang sử dụng WinForms, sau đó bạn có thể thấy rằng bạn có thể lật Y-Axis sử dụng Graphics.ScaleTransform:
private void ScaleTransformFloat(PaintEventArgs e)
{
// Begin graphics container
GraphicsContainer containerState = e.Graphics.BeginContainer();
// Flip the Y-Axis
e.Graphics.ScaleTransform(1.0F, -1.0F);
// Translate the drawing area accordingly
e.Graphics.TranslateTransform(0.0F, -(float)Height);
// Whatever you draw now (using this graphics context) will appear as
// though (0,0) were at the bottom left corner
e.Graphics.DrawRectangle(new Pen(Color.Blue, 3), 50, 0, 100, 40);
// End graphics container
e.Graphics.EndContainer(containerState);
// Other drawing actions here...
}
Bạn chỉ cần bao gồm bắt đầu/cuộc gọi chứa kết thúc nếu bạn muốn làm thêm bản vẽ sử dụng hệ thống tọa độ thông thường. Thông tin thêm về vùng chứa đồ họa là available on MSDN.
Như đã đề cập trong Tom trong nhận xét, phương pháp này yêu cầu giá trị Height
để có sẵn với giá trị chính xác. Nếu bạn thử điều này và thấy không có gì được rút ra, đảm bảo rằng giá trị là chính xác trong một trình gỡ lỗi.
Bạn cũng cần thêm bản dịch để công việc này hoạt động chính xác. – Eric
Cảm ơn Eric. Tôi đã cập nhật câu trả lời của mình và bao gồm thông tin về cách sử dụng các vùng chứa đồ họa để tách biệt các biến đổi này khỏi các thay đổi khác. –
Đã không làm việc cho tôi. Tôi chưa phải là một WinForms wiz. Khi nó quay ra "Chiều cao" không liên quan đến điều khiển hiện tại. Tôi gọi nó trong bảng điều khiển của tôi.OnPaint và không có gì được sơn. Đề cập rằng bạn cho rằng bạn đang vẽ lên biểu mẫu có thể tiết kiệm cho người khác một thời gian, vì nó có thể đã tiết kiệm cho tôi một số thời gian gỡ lỗi;) – Tom
Không, nhưng sử dụng thuộc tính Size
(hoặc Height
) của điều khiển, thật dễ dàng để tính toán tọa độ đã lật: Chỉ cần vẽ tới Height-y
.
Không phải là tôi biết nhưng nếu bạn sử dụng (x, Control.Height-y) bạn sẽ có được hiệu ứng tương tự.
trong ngắn hạn không, tuy nhiên nếu tôi đang vẽ trên điều khiển rất nhiều tôi có một vài chức năng mà giúp tôi:
Point GraphFromRaster(Point point) {...}
Point RasterFromGraph(Point point) {...}
cách này tôi giữ tất cả các chuyển đổi ở một nơi, không lo lắng về những thứ như y - this.Height
phân tán về mã.
lý do bỏ phiếu xuống? – Pondidum
Dưới đây là một usercontrol đơn giản mà chứng tỏ làm thế nào để làm điều này:
public partial class UserControl1 : UserControl
{
public UserControl1()
{
SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.DoubleBuffer, true);
InitializeComponent();
}
protected override void OnPaint(PaintEventArgs e)
{
e.Graphics.ScaleTransform(1.0F, -1.0F);
e.Graphics.TranslateTransform(0.0F, -(float)Height);
e.Graphics.DrawLine(Pens.Black, new Point(0, 0), new Point(Width, Height));
base.OnPaint(e);
}
}
- 1. Làm thế nào để lật tọa độ khi vẽ trong ngữ cảnh?
- 2. Làm cách nào để nhận tọa độ của con chuột khi điều khiển được nhấp?
- 3. Điều khiển bật lên WPF - Tìm tọa độ X, Y
- 4. Vẽ hình vuông có tọa độ cực
- 5. Làm cách nào để vẽ tọa độ vĩ độ/kinh độ trên màn hình?
- 6. Cách vẽ bản đồ png-osm với tọa độ
- 7. Lật hoạt ảnh khi bộ điều khiển được đẩy trên iPhone
- 8. gnuplot: Vẽ X, Y tọa độ và nhãn của họ
- 9. vẽ một nút trong bảng điều khiển winform trong khi bảng điều khiển được cuộn
- 10. Xem bộ điều khiển đang vẽ dưới thanh điều hướng của tôi sau khi bật ttthumbsviewcontroller
- 11. Scala: Vẽ bảng thành bàn điều khiển
- 12. Chuyển đổi tọa độ UIImageView Chạm vào Tọa độ UIImage
- 13. tọa độ hình chữ nhật sau khi chuyển đổi
- 14. Áp dụng pixel Tọa độ tọa độ màn hình
- 15. Descartes đến tọa độ cực
- 16. Tọa độ GPS: Android
- 17. Làm thế nào để có được tọa độ x và y của hình ảnh bitmap trong điều khiển hình ảnh?
- 18. MATLAB Làm cách nào để chuyển đổi tọa độ trục thành tọa độ pixel?
- 19. TimeZone theo Tọa độ
- 20. Làm cách nào để dịch chính xác tọa độ pixel sang tọa độ canvas trong Android?
- 21. Làm cách nào để chuyển đổi tọa độ trên một hình vuông thành các tọa độ trên một vòng tròn?
- 22. Làm cách nào để thoát khỏi điều khiển nguồn lật đổ trong studio trực quan?
- 23. MKMapView Vĩ độ và Kinh độ Tọa độ
- 24. Theo dõi Android x, y tọa độ vẽ từ Đường dẫn
- 25. Sự cố khi đẩy nhiều bộ điều khiển chế độ xem vào ngăn điều khiển điều hướng
- 26. Làm cách nào để chuyển đổi tọa độ thế giới thành tọa độ camera?
- 27. Tọa độ chuột tương ứng với Frame
- 28. SVG Chụp tọa độ chuột
- 29. OpenGL: Làm cách nào để tránh các lỗi làm tròn khi chỉ định tọa độ UV
- 30. Cách chính xác để animate Chế độ xem từ một tọa độ này sang tọa độ khác là gì?
Bạn đang sử dụng WinForms hoặc WPF? Bạn có thể muốn cập nhật các thẻ trên câu hỏi của mình. –