2011-10-03 23 views
6

Cách đơn giản nhất/thuận tiện nhất để tách các đối tượng vẽ tay trong Mathematica khỏi các đối tượng được lập trình là gì?Các đối tượng "vẽ tay" riêng biệt trong Mathematica

Các công cụ vẽ tương tác thuận tiện và hữu ích. Nhưng nếu tôi vẽ thứ gì đó lên trên cốt truyện, nó sẽ bị mất ngay khi cốt truyện được tạo lại. Có một giải pháp thuận tiện cho việc này?

Tôi có thể vẽ bản vẽ lên trên một ô trống, chúng kết hợp chúng với cốt truyện thực tế. Nhưng điều này là một lần nữa bất tiện vì tôi cần phải tự thiết lập phạm vi lô của ô trống và tôi không thấy nền phía trên mà tôi đang thêm các chú thích.

+5

câu hỏi liên quan: http://stackoverflow.com/q/5744117/421225 – Simon

+0

@Simon bạn nói đúng, có lẽ ai đó có thể hợp nhất? – Szabolcs

+1

Tôi rất vui khi có chúng riêng biệt. [Câu hỏi của Sjoerd] (http://stackoverflow.com/q/5744117/421225) đang mất tập trung với âm mưu tuyệt vời của nó, và [câu trả lời ngữ nghĩa đẹp của Brett] (http://stackoverflow.com/questions/7635181/separate-hand- vẽ-đối tượng-trong-mathematica/7640149 # 7640149) (như trái ngược với [câu trả lời cú pháp của TomD] (http://stackoverflow.com/questions/5744117/saving-plot-annotations/5753555#5753555)) xứng đáng để dễ dàng tìm thấy. Dù sao, hai câu hỏi được "Liên kết" trong cột bên phải của trang, do đó rất dễ tìm thấy từ một người khác. – Simon

Trả lời

14

Một cách tiếp cận, sử dụng một chú thích để gắn cờ nội dung được tạo ra:

Plot[Annotation[Sin[x], "GeneratedPrimitives"], {x, 0, 10}] 

RecoverDrawing[g_Graphics] := g /. Annotation[_, "GeneratedPrimitives"] :> {} 

RecoverDrawing[<modified graphic>] 

enter image description here

+4

+1 Tốt nhất Brett! Điều này trả lời câu hỏi tôi đã có với các phiên bản trước của vấn đề này (nơi bạn phải hack xung quanh một số vị trí nhất định trong cấu trúc Đồ họa bằng Phần), điều này có tác dụng trong các phiên bản sau không? Sử dụng chú thích có vẻ là cách mạnh mẽ hơn. –

+2

+10 Thật tuyệt! –

0

Thật không may, điều tốt nhất tôi có thể nghĩ đến là viết một chương trình bằng cách sử dụng ClickPane hoặc EventHandler không chỉ vẽ bản ghi bu các điểm được thêm vào hình ảnh. Một sửa đổi mã như:

DynamicModule[{pts = {}}, 
ClickPane[Dynamic[[email protected][Line[pts], PlotRange -> 1]], 
    AppendTo[pts, #] &]] 
Các vấn đề liên quan