Có thể sử dụng Multipatch để triển khai IFeatureRenderer. Vẽ trong trình kết xuất tùy chỉnh


8

Tôi có một trình kết xuất tùy chỉnh cần kết xuất hình học đã sửa đổi. Tất cả các tính năng đầu vào đều xuất hiện thông qua các IFeatureCursoryếu tố đa giác. (Điều này tương tự với ví dụ này , mặc dù tôi không kết xuất điểm.)

Tôi có thể dễ dàng kết xuất Đa giác, Đường và Điểm thông qua việc chuyển hình học mới vào IFeatureDraw.Drawhoặc gọi IDisplay.DrawPolygon/ IDisplay.DrawPoint/ v.v.

Tuy nhiên, IDisplaykhông cung cấp một cơ chế để vẽ một bội số, và chuyển cái này dưới dạng hình học để IFeatureDraw.Drawkết quả là không có gì được vẽ lên màn hình.

Có cách nào để trực tiếp "vẽ" một phần tử bội (tốt nhất là với kết cấu), trong phương thức này không?


Đây có phải là Hiển thị 2D (ArcMap) hoặc trong ArcScene hoặc Quả cầu không?
Craig Williams

@Craig: Điều này cần được hỗ trợ trong cả ba, mặc dù tôi sẵn sàng sử dụng nhiều đường dẫn mã để xử lý nó. Đây là một nguồn dữ liệu plugin, vì vậy hỗ trợ sẽ cần phải là "toàn cầu".
Sậy Copsey

Câu trả lời:


3

Như Craig nói, OpenGL là con đường dành cho 3D.

Xem phần Tạo ứng dụng ArcGIS Engine với C-Sharp và OpenGL . Các phiên bản trước của ArcGIS Explorer cũng hỗ trợ các cuộc gọi OpenGL , nhưng lần trước tôi đã kiểm tra Esri không còn hỗ trợ nữa.

Tôi không biết tại sao họ làm điều này - bản vẽ OpenGL thực sự giúp phân biệt AGX với Google Earth.

Cập nhật

Ngay cả khi plugin của bạn trả về các bội số một cách chính xác, tôi không nghĩ ArcObjects cung cấp các phương thức để hỗ trợ vẽ các bội số với các cuộc gọi OpenGL. Có thể sẽ dễ dàng hơn khi chỉ vẽ từ định dạng gốc của chúng (bỏ qua plugin bằng các từ khác). Tôi chưa bao giờ sử dụng nó, nhưng đây là tập lệnh cho biết cách sử dụng OpenGL với ArcScene .


1

Màn hình 2D (IDisplay) không hỗ trợ vẽ trực tiếp bội số. Bạn sẽ cần phải chuyển chúng thành dấu chân (xem IMultipatch :: XYFootprint để biết cách trích xuất dấu chân). Nếu bạn muốn hiển thị 2D các kết cấu đa bội, bạn sẽ cần tạo một hình ảnh từ hình chiếu 2D của bội số và vẽ nó.

Đối với 3D, bạn sẽ có thể trả lại các mulitpatches trong con trỏ và nó sẽ hoạt động nhưng thật ra hầu hết mọi người chỉ thực hiện một lớp tùy chỉnh cho quả địa cầu và thực hiện công việc của riêng họ trong OpenGL.


Tôi đang cố gắng hỗ trợ ArcScene chủ yếu (không phải Quả cầu), mà còn bản đồ / quả địa cầu là thứ yếu. Thật không may, trả lại bội số trong con trỏ không hoạt động đúng trong bộ dữ liệu plugin, từ những gì tôi có thể nói ...
Reed Copsey
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.