How to replace DrawClosedCurve / FillClosedCurve when moving from WinForms (GDI+) to WPF?
I've got an array of points (X,Y) which constitute a convex hull (a simple, irregularly shaped contour). Rather than rendering a polygon with straight edges, I want to render them with an approximate "smoothly curved" contour that passes through all of these points.
In WinForms/GDI+, this could be accomplished with the Graphics.DrawClosedCurve
or Graphics.FillClosedCurve
methods. There does not appear to be an equivalent in WPF.
I've looked into drawing using things like Path
and BezierSegment
, but I'm not sure if (and how) these can be used to generate a continuous closed curve, given a set of points. It appears that to do this, I'd perhaps have to generate a set of control points based on my contour as an intermediate step?
I have tried using the GDI+ methods to render onto a System.Drawing.Bitmap
and then displaying that in the WPF application. This works, but the performance (particularly the conversion from System.Drawing.Bitmap
to BitmapSource
) is poor and not sufficient for the application. This is why I'm looking for a pure WPF solution.
Has anyone been able to draw a closed curve based off a set of points in WPF?
c wpf gdi+ bezier curve
add a comment |
I've got an array of points (X,Y) which constitute a convex hull (a simple, irregularly shaped contour). Rather than rendering a polygon with straight edges, I want to render them with an approximate "smoothly curved" contour that passes through all of these points.
In WinForms/GDI+, this could be accomplished with the Graphics.DrawClosedCurve
or Graphics.FillClosedCurve
methods. There does not appear to be an equivalent in WPF.
I've looked into drawing using things like Path
and BezierSegment
, but I'm not sure if (and how) these can be used to generate a continuous closed curve, given a set of points. It appears that to do this, I'd perhaps have to generate a set of control points based on my contour as an intermediate step?
I have tried using the GDI+ methods to render onto a System.Drawing.Bitmap
and then displaying that in the WPF application. This works, but the performance (particularly the conversion from System.Drawing.Bitmap
to BitmapSource
) is poor and not sufficient for the application. This is why I'm looking for a pure WPF solution.
Has anyone been able to draw a closed curve based off a set of points in WPF?
c wpf gdi+ bezier curve
add a comment |
I've got an array of points (X,Y) which constitute a convex hull (a simple, irregularly shaped contour). Rather than rendering a polygon with straight edges, I want to render them with an approximate "smoothly curved" contour that passes through all of these points.
In WinForms/GDI+, this could be accomplished with the Graphics.DrawClosedCurve
or Graphics.FillClosedCurve
methods. There does not appear to be an equivalent in WPF.
I've looked into drawing using things like Path
and BezierSegment
, but I'm not sure if (and how) these can be used to generate a continuous closed curve, given a set of points. It appears that to do this, I'd perhaps have to generate a set of control points based on my contour as an intermediate step?
I have tried using the GDI+ methods to render onto a System.Drawing.Bitmap
and then displaying that in the WPF application. This works, but the performance (particularly the conversion from System.Drawing.Bitmap
to BitmapSource
) is poor and not sufficient for the application. This is why I'm looking for a pure WPF solution.
Has anyone been able to draw a closed curve based off a set of points in WPF?
c wpf gdi+ bezier curve
I've got an array of points (X,Y) which constitute a convex hull (a simple, irregularly shaped contour). Rather than rendering a polygon with straight edges, I want to render them with an approximate "smoothly curved" contour that passes through all of these points.
In WinForms/GDI+, this could be accomplished with the Graphics.DrawClosedCurve
or Graphics.FillClosedCurve
methods. There does not appear to be an equivalent in WPF.
I've looked into drawing using things like Path
and BezierSegment
, but I'm not sure if (and how) these can be used to generate a continuous closed curve, given a set of points. It appears that to do this, I'd perhaps have to generate a set of control points based on my contour as an intermediate step?
I have tried using the GDI+ methods to render onto a System.Drawing.Bitmap
and then displaying that in the WPF application. This works, but the performance (particularly the conversion from System.Drawing.Bitmap
to BitmapSource
) is poor and not sufficient for the application. This is why I'm looking for a pure WPF solution.
Has anyone been able to draw a closed curve based off a set of points in WPF?
c wpf gdi+ bezier curve
c wpf gdi+ bezier curve
asked Nov 22 '18 at 19:21
KohanzKohanz
1,0541029
1,0541029
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
Unfortunately, there is no single-method equivalent to DrawClosedCurve
in WPF, even though it's been requested. So you are left with at least two options:
- Host a native window within your WPF window and perform all your drawing on it.
- Implement your own cardinal spline drawing. You are on the right track with Bezier segments. However, there are existing implementations of it you can look at out there.
Thank you so much! Your answer was exactly the information I needed. Particularly the last link.
– Kohanz
Nov 22 '18 at 21:23
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53437012%2fhow-to-replace-drawclosedcurve-fillclosedcurve-when-moving-from-winforms-gdi%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Unfortunately, there is no single-method equivalent to DrawClosedCurve
in WPF, even though it's been requested. So you are left with at least two options:
- Host a native window within your WPF window and perform all your drawing on it.
- Implement your own cardinal spline drawing. You are on the right track with Bezier segments. However, there are existing implementations of it you can look at out there.
Thank you so much! Your answer was exactly the information I needed. Particularly the last link.
– Kohanz
Nov 22 '18 at 21:23
add a comment |
Unfortunately, there is no single-method equivalent to DrawClosedCurve
in WPF, even though it's been requested. So you are left with at least two options:
- Host a native window within your WPF window and perform all your drawing on it.
- Implement your own cardinal spline drawing. You are on the right track with Bezier segments. However, there are existing implementations of it you can look at out there.
Thank you so much! Your answer was exactly the information I needed. Particularly the last link.
– Kohanz
Nov 22 '18 at 21:23
add a comment |
Unfortunately, there is no single-method equivalent to DrawClosedCurve
in WPF, even though it's been requested. So you are left with at least two options:
- Host a native window within your WPF window and perform all your drawing on it.
- Implement your own cardinal spline drawing. You are on the right track with Bezier segments. However, there are existing implementations of it you can look at out there.
Unfortunately, there is no single-method equivalent to DrawClosedCurve
in WPF, even though it's been requested. So you are left with at least two options:
- Host a native window within your WPF window and perform all your drawing on it.
- Implement your own cardinal spline drawing. You are on the right track with Bezier segments. However, there are existing implementations of it you can look at out there.
answered Nov 22 '18 at 20:40
mnisticmnistic
7,1731923
7,1731923
Thank you so much! Your answer was exactly the information I needed. Particularly the last link.
– Kohanz
Nov 22 '18 at 21:23
add a comment |
Thank you so much! Your answer was exactly the information I needed. Particularly the last link.
– Kohanz
Nov 22 '18 at 21:23
Thank you so much! Your answer was exactly the information I needed. Particularly the last link.
– Kohanz
Nov 22 '18 at 21:23
Thank you so much! Your answer was exactly the information I needed. Particularly the last link.
– Kohanz
Nov 22 '18 at 21:23
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53437012%2fhow-to-replace-drawclosedcurve-fillclosedcurve-when-moving-from-winforms-gdi%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown