{"id":1610,"date":"2016-07-15T11:27:05","date_gmt":"2016-07-15T11:27:05","guid":{"rendered":"http:\/\/mindfusion.eu\/blog\/?p=1610"},"modified":"2021-01-20T17:45:36","modified_gmt":"2021-01-20T17:45:36","slug":"design-custom-shapes-with-wpf-diagram","status":"publish","type":"post","link":"https:\/\/mindfusion.dev\/blog\/design-custom-shapes-with-wpf-diagram\/","title":{"rendered":"Design custom shapes with WPF Diagram"},"content":{"rendered":"<p><a href=\"https:\/\/www.youtube.com\/watch?v=jqcSdjPFmlc&amp;feature=youtu.be\">Watch here the video for this tutorial.<\/a><\/p>\n<p>This tutorial will run you through the process of creating custom WPF diagram shapes using the built-in Shape Designer. Keep in mind that the Designer is intended as a sample and is limited in terms of functionality. The designer is available inside the installation of MindFusion.Diagramming for WPF but is also included in this tutorial for convenience. For the purposes of this tutorial, we will create an &#8216;AND Gate&#8217; circuit diagram shape as illustrated by the following image:<\/p>\n<p><a href=\"http:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/circuit_shapes.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-1637\" src=\"http:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/circuit_shapes.png\" alt=\"Circuit shapes\" width=\"177\" height=\"267\" \/><\/a><\/p>\n<p>Run the Shape Designer application through the <em>ShapeDesign.exe<\/em>. The Shape Designer opens up with a single rectangular shape ready to be modified.<\/p>\n<p><a href=\"http:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-1638\" src=\"http:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_1-300x225.png\" alt=\"Diagramming WPF Circuit Shapes 1\" width=\"300\" height=\"225\" srcset=\"https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_1-300x225.png 300w, https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_1-768x576.png 768w, https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_1.png 1024w, https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_1-400x300.png 400w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>The Shape Designer does not currently support shape renaming (remember, it&#8217;s just a sample), therefore create a new shape through the Shapes menu and name it &#8216;AndGate&#8217;.<\/p>\n<p><a href=\"http:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-1639\" src=\"http:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_2-300x225.png\" alt=\"Diagramming WPF Circuit Shapes 2\" width=\"300\" height=\"225\" srcset=\"https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_2-300x225.png 300w, https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_2-768x576.png 768w, https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_2.png 1024w, https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_2-400x300.png 400w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Select the newly created shape from the list on the left. In the editor select the right segment of the shape&#8217;s rectangle and press the DEL button on the keyboard. This will delete the segment and make the shape triangular.<\/p>\n<p><a href=\"http:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-1640\" src=\"http:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_3-300x225.png\" alt=\"Diagramming WPF Circuit Shapes 3\" width=\"300\" height=\"225\" srcset=\"https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_3-300x225.png 300w, https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_3-768x576.png 768w, https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_3.png 1024w, https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_3-400x300.png 400w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Adjust the end points of the shape segments so that it gets deflated on both sides. To adjust a segment, hover it with the mouse (so that its adjustment handles appear), then drag the handles.<\/p>\n<p><a href=\"http:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_4.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-1629\" src=\"http:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_4-300x225.png\" alt=\"Diagramming WPF Circuit Shapes 4\" width=\"300\" height=\"225\" srcset=\"https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_4-300x225.png 300w, https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_4-768x576.png 768w, https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_4.png 1024w, https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_4-400x300.png 400w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Select the arc primitive from the list on the right side of the screen. Drag this primitive over the top segment of the shape (until it gets highlighted in red) then drop.<\/p>\n<p><a href=\"http:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_5.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-1630\" src=\"http:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_5-300x225.png\" alt=\"Diagramming WPF Circuit Shapes 5\" width=\"300\" height=\"225\" srcset=\"https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_5-300x225.png 300w, https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_5-768x576.png 768w, https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_5.png 1024w, https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_5-400x300.png 400w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>This will replace the line segment with an arc. Repeat the same process for the bottom segment of the shape.<\/p>\n<p><a href=\"http:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_6.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-1631\" src=\"http:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_6-300x225.png\" alt=\"Diagramming WPF Circuit Shapes 6\" width=\"300\" height=\"225\" srcset=\"https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_6-300x225.png 300w, https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_6-768x576.png 768w, https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_6.png 1024w, https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_6-400x300.png 400w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Adjust the middle point of both segments so that the shape looks protruded. Then drag three line primitives from the list on the right to the editor pane. Be careful not to drop the primitives over existing elements because this will replace the elements.<\/p>\n<p><a href=\"http:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_7.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-1632\" src=\"http:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_7-300x225.png\" alt=\"Diagramming WPF Circuit Shapes 7\" width=\"300\" height=\"225\" srcset=\"https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_7-300x225.png 300w, https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_7-768x576.png 768w, https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_7.png 1024w, https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_7-400x300.png 400w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Align the newly created line primitives with the existing shape.<\/p>\n<p><a href=\"http:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_8.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-1633\" src=\"http:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_8-300x225.png\" alt=\"Diagramming WPF Circuit Shapes 8\" width=\"300\" height=\"225\" srcset=\"https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_8-300x225.png 300w, https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_8-768x576.png 768w, https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_8.png 1024w, https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_8-400x300.png 400w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>From the list with anchor points at the right side of the application, drag two anchor points from the first kind (input only) and one anchor point from the second kind (output only) and drop them inside the editor. Align the anchor points with the end points of the line segments created in the previous step.<\/p>\n<p><a href=\"http:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_9.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-1634\" src=\"http:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_9-300x225.png\" alt=\"Diagramming WPF Circuit Shapes 9\" width=\"300\" height=\"225\" srcset=\"https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_9-300x225.png 300w, https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_9-768x576.png 768w, https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_9.png 1024w, https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_9-400x300.png 400w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>This will conclude the creation of the &#8216;AND Gate&#8217; shape. You can test the shape in the preview diagram at the bottom of the screen.<\/p>\n<p><a href=\"http:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_10.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-1635\" src=\"http:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_10-300x225.png\" alt=\"Diagramming WPF Circuit Shapes 10\" width=\"300\" height=\"225\" srcset=\"https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_10-300x225.png 300w, https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_10-768x576.png 768w, https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_10.png 1024w, https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_10-400x300.png 400w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>Save the shape library. Using the same approach, recreate the other circuit shapes from the image above. The following screenshot illustrates the complete library.<\/p>\n<p><a href=\"http:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_11.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-1636\" src=\"http:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_11-300x225.png\" alt=\"Diagramming WPF Circuit Shapes 11\" width=\"300\" height=\"225\" srcset=\"https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_11-300x225.png 300w, https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_11-768x576.png 768w, https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_11.png 1024w, https:\/\/mindfusion.dev\/blog\/wp-content\/uploads\/2016\/07\/Diagramming_WPF_Circuit_Shapes_11-400x300.png 400w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p>The shape designer along with the shape library containing the circuit shapes can be downloaded from the link below:<\/p>\n<p><a href=\"https:\/\/mindfusion.dev\/_samples\/WpfDiagrammingCircuitShapes.zip\">Design Circuit Shapes<\/a><\/p>\n<p>You are welcome to ask any questions about the WpfDiagram control at MindFusion <a href=\"http:\/\/mindfusion.dev\/Forum\/YaBB.pl?board=wpfdg_disc\">discussion board<\/a> or per e-mail at <a href=\"mailto:support@mindfusion.dev\">support@mindfusion.dev<\/a>.<\/p>\n<p>Click here <a href=\"http:\/\/mindfusion.dev\/wpf-diagram.html\">here<\/a> to visit the official page of the control.<\/p>\n<p>We hope you find this tutorial useful and thank you for your interest in MindFusion developer tools.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Watch here the video for this tutorial. This tutorial will run you through the process of creating custom WPF diagram shapes using the built-in Shape Designer. Keep in mind that the Designer is intended as a sample and is limited &hellip; <a href=\"https:\/\/mindfusion.dev\/blog\/design-custom-shapes-with-wpf-diagram\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false},"version":2}},"categories":[95,2],"tags":[420,69,421,3,155,58],"class_list":["post-1610","post","type-post","status-publish","format-standard","hentry","category-diagramming-2","category-product-releases","tag-circuit","tag-control","tag-custom","tag-diagram","tag-shape","tag-wpf"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p3RlKs-pY","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/mindfusion.dev\/blog\/wp-json\/wp\/v2\/posts\/1610","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mindfusion.dev\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mindfusion.dev\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mindfusion.dev\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/mindfusion.dev\/blog\/wp-json\/wp\/v2\/comments?post=1610"}],"version-history":[{"count":11,"href":"https:\/\/mindfusion.dev\/blog\/wp-json\/wp\/v2\/posts\/1610\/revisions"}],"predecessor-version":[{"id":2598,"href":"https:\/\/mindfusion.dev\/blog\/wp-json\/wp\/v2\/posts\/1610\/revisions\/2598"}],"wp:attachment":[{"href":"https:\/\/mindfusion.dev\/blog\/wp-json\/wp\/v2\/media?parent=1610"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mindfusion.dev\/blog\/wp-json\/wp\/v2\/categories?post=1610"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mindfusion.dev\/blog\/wp-json\/wp\/v2\/tags?post=1610"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}