I am doing multiple images draw with c# using DrawImage, how can I determine which image should be draw first? I have some images stacking with each other so I should determine which one to be drawn first , its like image on top of the another image, thanks!
If you're asking for how to draw images to overlap each other you can use Controls.SetChildIndex.
Related
I'm able to fill a rectangle with an image and i apply a mask on top of the image using this code
args.DrawingSession.FillRectangle(rect, imgRnd, mask);
i need to apply some transform to this image, i'am able to do that with no issue, but i have encounter a strange issue, the last pixel is repeated.
i have used
imgRnd.ExtendX = CanvasEdgeBehavior.Wrap;
imgRnd.ExtendY = CanvasEdgeBehavior.Wrap;
and the image is repeated continuously.
My question is : there is a way to draw one time the image disabling and ExtendX and ExtendY?
FillRectangle will always fill all the pixels within the specified rectangle. The edge behavior enum controls what value they are filled with if the image is positioned such that it does not completely cover the rectangle being drawn.
How exactly are you transforming the image? Can you change that to also transform the rectangle itself, so you won't be trying to fill pixels that aren't covered by the image?
Another option is to use image effects (Microsoft.Graphics.Canvas.Effects namespace) which give much more detailed control than FillRectangle over how multiple images are transformed, combined, etc.
I am trying to crop the object from its background on an image using AForge.net. I have detect the edges of the object using cannyEegeDetector, but I don's know how to crop it using the detected edges.
Do you have any ideas to crop the object from the background?
I don't know anything about the data structure that CannyEdgeDetector returns, but you probably want to treat it with an algorithm similar to contour filling in the selected area (kinda like the fill bucket in MS Paint). On each row of the images pixels, start from the left side of the image scanning right, and each time you cross a boundary, you toggle whether it's in the "fill area". Pixels in the fill area are preserved, ones outside of it are cropped. Hope that helps!
I am making a logical gates application and I can currently drag out bitmaps into the picturebox. These bitmaps are the logical gates. Now I need a way to draw the lines to connect inputs with gates. I would like to have the line sort of stick to connection or anchor points on the bitmap that I place but I have no idea how to do this.
Each bitmap dragged out is an object with a size and an x y position.
Thanks for any help! I have been searching for a solution for a while now.
I basically ended up making 10x10 rectangles positioned according to the height/width of the object that would update when the bitmap was moved. The bitmap was also its own rectangle.
I've got a large image in memory which I convert to an System.Windows.Media.ImageBrush and use it as the Fill for a System.Windows.Shapes.Rectangle. You can move this rectangle around with your cursor.
Basically I want to use the rectangle as a "viewport". Thus I need to change which parts of the image get displayed within the rectangle, i.e., define a rectangular subsection of the image.
How can I do that?
I see ImageBrush.Viewport but that doesn't seem to mean the same thing.
I'm open to alternative solutions that don't involve a rectangle, such as drawing directly on a canvas or something, but AFAIK WPF doesn't let you access pixel data directly (at least not easily).
To achieve this your going to have to create your own rectangle user control to allow the user to create/resize a rectangle. Then I would create a CroppedBitmap of the image in the rectangle portion Cropped Bitmap MSDN Stackoverflow example
Edit
No, no, no #Mark, You dont turn the CroppedBitmap into a UserControl. You create a USerControl that exposed the CroppedBitmap. Basically, you create a UserControl with the following DependencyProperties
The Image
The Width of he cropped portion
The Height of the cropped portion
The Left of the cropped portion
Top of the cropped portion
Then as soon as any of these properties your DP callback will do a RenderTargetBitmap Crop of the new region.
I have a System.Drawing.Image that I would like to use as the centered portion for a new, larger image. I’m given the dimensions of the (always) larger image and the idea is to make that image all white and overlay its center with the first image. Is there a way to do this using GDI+? Some combination of TextureBrush and the Graphic class perhaps? I’m open to suggestions. Thanks!
Lots of similar questions, here's one that I think will show you the basics:
How could I position multiple transparent PNGs onto a JPG using c# and asp.net?