Basic picturebox error - vb.net

I want to add a .gif image to a picturebox.
I want user to choose image from a variety of images of different pixels.
if I use
picturebox1.image = image.fromfile("E:\ship1")
then there is no option available of imagelayout unlike backgroundimage.
because of different images pixel only half of image is displayed in my picturebox size.
I don't want to change my picturebox size because in the game that i am working on, it can cause problems.
If i use
picturebox.backgroundimage = image.fromfile("E:\ship1")
but then .gif would not show its animation.
Any suggestion for solution apart from changing size of picturebox cause that would be the last thing to do

Related

Background image gets cut off, even though form and image size match

I am trying to create a Ludo game using Windows Forms.
I have set the background to be the image of a ludo board, where both the image and the window have the same size (960x960). I cannot use the image stretch feature, as it will mess with the button positions on my Form.
The Form has the bottom and the right side of the background image trimmed off, even though the Form matches the size of the background image.
The Size of the form is the outer dimensions. You should set the ClientSize of your form to the Size of the Image, which you can do in code. That way, the image and form will look correct no matter what window chrome is or isn't present.

Circular images

In my application, users are allowed to choose a picture they want and this picture shows up in a picturebox.
I want to know if there was a way so that this picture that they select becomes circular instead of a square?
I want all images they select to be circle shaped.
Is there anyway to do this? Doesn't even have to be a picturebox control, anything that can accomplish this is fine
I tried this with no luck - http://www.codeproject.com/Questions/430531/circle-shaped-picture-box
Not the smartest way, but worked for me in similar task. If your picturebox is fixed size, you can create "mask" which will hide the corners.
Just draw an image in PNG with transparent circle in the middle and make the rest same color as your form. Use this image as Image propperty of each imagebox and set your image as "backgroundImage" property. This way, the image will look circle-shaped.
If you need imageboxes of different size, you can create the circle mask programmatically.
EDIT: If you will prepare a calculation of circle, you can also use it to "crop" the images to circle shape. It all depends on what you want to do with these images later.
Do you need to use them later in circle or rectangle shape?

Fit image in picturebox without saving image beforehand?

I have a picture box. The user can draw different rectangles on it, assuming that the user draws rectangles which go beyond the size of the picturebox, can I uniformly resize the contents to fit the picturebox, even though the image is not saved yet?.
I can only manage to resize content that has been loaded in from and already saved image file. The code that I am using to draw rectangles is as follows:
gr.FillRectangle(Brushes.Black, 0, 0, 2, 75)
Rectangles do appear on picturebox as would be expected.
Also I am unable to save using the following code:
PictureBox1.Image.Save("C:\test\myimage.jpg", System.Drawing.Imaging.ImageFormat.Jpeg)
The error that I get is:
Object reference not set to an instance of an object.
I use System.IO.MemoryStream when I want to fill pictureboxes with images without saving to the hard drive.
PictureBox1.Image = New System.Drawing.Bitmap(New IO.MemoryStream(New System.Net.WebClient().DownloadData("http://upload.wikimedia.org/wikipedia/commons/e/ec/Banksy.on.the.thekla.arp.jpg")))
This is probably because your PictureBox has no "Image" object assigned to it.
You can find the solution here (first answer): getting image from a picturebox
[Also, you might face issues later on with regards to saving to your root folder (C:). Try to use a folder on your local Desktop, for example, to avoid any access-permission errors.]
Edit:
This is taken from the above link. It appears to me that you have not tried it.
myPictureBox.Image = New Bitmap(myPictureBox.ClientSize.Width, _
myPictureBox.ClientSize.Height)
'Then, when you want to perform some drawing, use a Graphics object from the Image instead of the PictureBox:
Using g As Graphics = Graphics.FromImage(myPictureBox.Image)
' do the drawing '
End Using

Picture Box and Form Transparency

Maybe I am missing something, but is it the case that when you set a pictureboxes background to transparent, all it really does is set it to the same color as the forms background?
What I am trying to do is draw an animation for the benefit of this, a bouncing ball - which I paint on the form, then overlay that with a picture frame. End result should be a bouncing ball in a picture frame, I should mention that the picture frame does not have a straight edge, so it is not possible to arrange 4 picture boxes in a frame. The ball needs to vanish behind the frame to change color and then magically bounce back out.
I have tried:
1.Setting the picture box background to pink and then key out the same pink, this basically cuts away everything, including that which is behind the picture box
2.Setting the picture box to transparent, this just displays the picture box background as the same color as the forms background.
3.I have tried painting the image in a rectangle, this had the same effect as drawing it in a picture box.
I am not sure what I am doing wrong, I am wondering if there is any other ways I could try or if someone has made a custom control or library that supports transparency?
Try using a Panel with the background image set. This is because; as you said: the transparent option only takes the backcolour of the parent.
After doing some more in depth research I solved this by drawing both the images to the form using PaintEventArgs and me.paint
Making each image transparent using:
Dim TestImage as Bitmap
TestImage.MakeTransparent(<Transparency Color>)
Thank you to both of you for your replies though.
Hmm... If You want to use Picturebox and get a transparent image,
Try to set picturebox's background as your 'Ball' (probably you need an image editor).
and set picturebox transparent. It worked for me (VS Express 2010) once.

Huge picturebox (16000x16000)

Sometimes, my users will use a 16000x16000 picturebox (which is located in a Panel, for autoscroll).
The picturebox is used like a tiles map. On it, I draw tiles for making maps (yes, it is a map editor)...
But the mere idea of being able to create a picturebox that huge, is terrible for performance.
I am told to "only load the visible area", but, what do they mean by "load" on a picturebox? Can I control that?
You don't want to let the picturebox display complete images. Instead, you use the Paint event to draw the visible image portion yourself