Graphics.DrawImage Loses Resolution?
Dec 21, 2010Graphics.DrawImage loses resolution
View 13 RepliesGraphics.DrawImage loses resolution
View 13 RepliesWell currently im programming a game in Visual Basic and I have it to the point where it draws a map on the form, it loads maps to different areas when you walk on the map, and I am doing so by using Graphics. DrawImage which redraws the map on the screen with the character in the new position. It was working quickly and smoothly until now.
I added some more sprites and now it starts to lag badly then it will throw a Out of Memory exception and it will display a big red x across the form. I watched the memory now as i move the character one spot on the forum and the memory increases 100mb's each time. It wasn't doing this before which is weird. I managed to fix the out of memory error using GC.GarbageCollect but I read that this is bad, also the character still lags across the forum. I really didn't want to release the source code until I was finished but seeing as I need help quickly because this is for a project I am working on for Thursday (End of semester Programming 2 Junior year of high school) I don't have many options.
I'm trying to improve the speed of my call to:Graphics.DrawImage (Image, Rectangle, Int32, Int32, Int32, Int32, GraphicsUnit, ImageAttributes)I want to display two images, where the old one fades smoothly into the new one, driven by a Timer tick of 10 or 20 ticks a second. The following code runs fine on JPEG files of around half a megabyte or less, but takes much too long (up to half a second) fora 2MB JPEG. Using the Stopwatch control, I isolated the problem to the two .DrawImage calls. Do I need to do this in DirectX or is there a way to improve the efficiency of the routine? I thought of trying to resize the two images beforehand to fit the rectangle, but that's not a simple call (I don't think), and it might just mean moving the delay elsewhere.
(Dim fltOpacity As Single = 1.0F 'opacity value)
(Dim BGrafx As BufferedGraphics)
* * * * * * * * * *
[code].....
How do I flip the image upside down (below the first image) Like as if a house were at the waters edge and you can see the house, and the reflection in the water?
code for drawing the image (which is a battery)
VB
'Finding center'
Dim batX As Integer = 160 - (imgDct(cbo_Battery.Text).Width / 2)
Dim batY As Integer = 200 - (imgDct(cbo_Battery.Text).Height / 2)
'Draw Battery
[Code]...
This is in a class, the class inherits Panel. VB.net
[Code]...
The goal is to have this image stretched to 300x50 Whenever I do it, it works, but it fades the image from left to right, so that at Left = 0, the image is solid, but at Left = 300, the image is transparent.
I need to draw a bitmap background with one or more moving bitmaps in the foreground; something like a chessboard where pieces move across it. I use a timer-tick event to redraw the background and then draw the relocated foreground image like the code below. But I get flicker, even though I set the form to use double-buffering. The culprit seems to be redrawing the background to refresh where the foreground images used to be; no flicker if I replace the background DrawImage with a simple Graphics.Clear. I think what I want to do is draw the background, and the foreground bitmap(s), in memory and then render it all. I used to do this with double-buffering, BitBlt, and .Refresh in VB6 but I haven't found the equivalent in VB2010. This must be a pretty common graphics requirement; what's the trick to it?
Dim Gfx As Graphics
Me.SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.UserPaint Or ControlStyles.OptimizedDoubleBuffer, True)
Dim rectBrd As Rectangle 'use as clipping region for drawing
[Code].....
I have tried to realign the image by down and right one pixel, but still only part of the first row and column are visible when zoomed.I can't find exactly what I'm looking for online.
My computer is an HP-Pavillion dv9600 Notebook PC.
OS: Windows Vista SP2 32-bit
The following code reproduces the problem:
Public Class PictureBug
Dim pxlColor As Color
Dim img As Bitmap = New System.Drawing.Bitmap(My.Resources.TestBug[code]......
I'm trying to find a way to grab the resolution of the user's screen (eg, 1280x1024) but for the life of me, I can't figure out how. Is there a registry key that holds the resolution, or perhaps something else? I don't need to change it, just find it.
View 1 RepliesRecently I released a �preview edition� of an app to the www for distribution. One of the comments I received back was about it not fitting on the screen properly.So I just wanted to put it out there and get some feedback on how everyone approaches the subject of trying to make everyone happy.Being that it was a preview edition and not a released version I wasn�t all that concerned about things like auto scaling. The purpose was to demonstrate the concept of the program not provide a fully functioning bug free version of the software.I have started on a �preview edition 2� which includes 5 group boxes (3 left side and 2 right side) and I have that fairly well sorted, sizing and positioning the group boxes using the Form width and Height.I am not really interested in improving that section of the code too much as it works fairly well already. My concern is more around the labels, text boxes, drop down boxes etc. in the groupboxes�
Again I can do a similar thing scaling to the height and width of the groupbox properties to align the contents of the groupboxes.My question is� When you try to use a resolution like 800 x 600 (which appears huge after using ~1600 x 1000) how do you squeeze everything on the page?I was thinking of changing the font size for each resolution group i.e. < 900 Horizontal run this font size, < 1000 Horizontal run this font size etc.Or I could work out the font size based on the resolution and round it� FontSize = rnd (Res / 100, 1) since the lower the resolution the bigger the font is going to look anyway.If I can control the font size and I auto size all the labels and text boxes etc. I think I have a far better chance of getting everything on the screen.
I'm a VB beginner.I've been playing with Graphics.DrawString by watermarking a picture with a text string. The picture below to the left comes from PictureBox with a text string drawn with Graphics.DrawString. The font style used is Arial 48 points, regular, I think. The picture in PictureBox shows just as I configure. Great... The resolution of the original Terri Hatcher picture is 300 dpi (300 x 300). Exporting this picture with Graphics.DrawString, I get the picture below to the right. The text string appears a lot bigger than previously shown in PictureBox. It turns out that the text size varies, depending on the resolution of the original picture. That's kind of odd. I develop several graphics applications in a different environment and have never seen this sort of graphics.drawstring thing. Anyway,
my sample application seems to draw a text string at an image resolution of
[Code]...
How to get list of all resolution of client monitor and check with resolution passed by application
View 2 Replies1. Is there anyway to make an application look as though it has been set to a screen resolution of 1024 x 768 when the true resolution different?
2. I am developing my app using a widescreen monitor. What dimensions does the form need to be set to so that it looks exactly the same on a normal & widescreen monitor?
I am working on an program and I need it to change the size on the form and the button etc when its ran on a different resolution then it was coded on. Is there anyway to do this easy or do I have to hard code it on two different and change it by like a button etc? I am working with a 1024 X 780 and a 1240 X 1024.
View 8 RepliesI have a very high screen resolution on my laptop: 1400x1050.My colleague tried it out on his laptop (which had lesser resolution), and the application did not fit on his laptop. The buttons were dragging out of the screen space.So, I want my application to automatically resize/adjust based upon the screen resolution.I don't want to use Maximized screen option and don't want to change user's pc settings.Unfortunatly I am not using Table Layout panel.
View 5 RepliesIn my application,I placed the user control on a panel,I want to resize that control on a panel automatically according to different screen resolution.
View 6 RepliesCan we set the windows form resolution according to pc screen resolution and even the control should be adjusted...
eg.
My screen resolution is 1366 X 768
and my form size is 1254, 709....but I want it so set according to the screen and it will be dynamic...
if I transfer my project to some other pc with lower or higher resolution it should be adjusted....
and suppose I have few controls on the form...will that also be adjusted??
I had designed all forms on 1280/800 screen resolution.
i want set all forms resolution like the current screen resolution of the user,or make the form resolution is dynamic with each resolution of screen for
I have these three images that I have drawn to my form.
GraphicsBuffer.DrawImage(ButtonEasy, New Rectangle(25, 330, 100, 50), 0, 0, 100, 50, GraphicsUnit.Pixel, ImageAttributes)
GraphicsBuffer.DrawImage(ButtonMedium, New Rectangle(150, 330, 100, 50), 0, 0, 100, 50, GraphicsUnit.Pixel, ImageAttributes)
GraphicsBuffer.DrawImage(ButtonHard, New Rectangle(275, 330, 100, 50), 0, 0, 100, 50, GraphicsUnit.Pixel, ImageAttributes)
But I want to make a Boolean expression for when they are clicked so I can trigger the events to load the game mode selected.
Do I do this through resource code or is there a simply way to do this. My idea seems like it would be bad and not syntaxically correct.
Edit: I've gotten to this:
Private Sub ButtonEasy_MouseClick(ByVal sender As Object, ByVal e As MouseEventArgs) _
Handles ButtonEasy.MouseClick
[Code].....
At the top of my code I have:
imports system.drawing.graphics
but when I try to use it, no DrawImage or DrawString methods are available. I can get DrawImageAbort rather ironically.[code]...
I've a program that draw an image in a picturebox with DrawImage. This image, a ball (.png transparent), every second is overwritten by another ball of different color. After 3-5 second the edge of the ball becomes bad, because of overwriting.
I tried to clean the background with a FillRectangle before any overwrite, but i need to preserve the windows form background. How can i do that?
In my user control's paint handler I iterate over a collection of predefined Bitmap objects and draw them to the client area thusly:
C# version:
private void Control_Paint(object sender, PaintEventArgs e) {
Graphics g = e.Graphics;
foreach (BitmapObj bmpObj in _bitmapObjCollection) {
g.DrawImageUnscaled(bmpObj.Bitmap, bmpObj.Location);
[Code] .....
The code works fine but starts to bog down when a dozen or so objects are added to the collection. My question is: Is there a way to speed this up? Would it be possible to use the Win32 bitblt function to replace DrawImageUnscaled? And if so how?
Basically, what I am trying to do is scale part of an image. In VB6 the Scaling version of the BITBLT api worked fine, however in .NET's Drawimage version of it works okay, until a different destination size is specified.url...The red is from the next tile on the source image. and the bottom is missing one row of pixels.I have also screened this, and counted that the left side isn't properly doubled and the very first column of pixels is in 1x1 squares instead of 2x2 like the rest of the image.I don't get why it's obtaining outside the range I set, so here is my code incase it helps, note that you'll need to define a blocks array:[code]
View 3 Repliesusing DrawImage I can copy the whole source picture into destination one using its left&top corner and width&height sizes...butI would like to copy A REGION of source picture into destination one using my "starting corner" and my sizes.
View 5 RepliesI am using VB 2008 & drawimage function to copy image A to Image B. My problem is image A has many different colored patches on it and I only want to copy the ones that have a certain RGB value. I was going to set the masking color to the RGB value but remembered that defines the color to ignore - Im interested in the opposite.
I know I could loop through all the pixels and check its color, but its way slow and Im hoping theres something better?
This is my first post to these forums so forgive me for any etiquette I may be disregarding.I am creating a custom control that has a TabControl on it. The user will then double click or right click the TabControl to display a ContextMenuStrip asking if they would like to add a new image (or tab) to the project. After they select the image file, I create a new tab, add that to the TabControl, and then I want to create a PictureBox that I draw on in a particular way depending on space available and several other factors.
Where I am having the issue is in drawing the image to the PictureBox, it is only displaying the BackColor and none of the DrawImage work. It is important to note that because of what I am doing it will not suffice to set the PicBox.Image = ImageFile or PicBox.BackgroundImage = ImageFile. I need to select tiles from the image file and then draw them into the PictureBox in a particular way, which changes if the control resizes. Also, I am using a PictureBox because the final image within it can potentially be larger than the containing tab page, and therefore I want the TabPage to generate an AutoScroll bar. If there is another way to do this, please let me know.
Below is a very simple example of what I have currently. What I suspect to be happening is that the PictureBox's Paint event is firing after I do my DrawImage work and basically overriding what I did, but I hope I am wrong.OpenAddTilesetForm() simply displays a form for the user to select which image to use, and the properties pertaining to it.
[Code]...
In the following code is the way to make a picture transparent (picture i1 is emty and opacity can get values from 0.00 to 1.00[code]...
View 1 Replies[Code]...
I don't know how to distort bmpR with destinationPoints0. Which graphic method do I use to transform it? Muchas gracias, Onion Ring (fried) Onion is a recent refuge from Mac OS X and hates Mac App Store. System: Windows 7 x64
' Show game directions.[code]...
I think this is actually really easy to do that it isn't documented on here or msdn.
I sometimes need to retain the values of my variable for a very long time as the same value will get used over and over again until it gets referenced again somewhere down the line and then it changes it value.
So is it possible for a variable to never lose its value even when a form is closed or a sub finishes?
I am using VS 2008 to develop a VB application which has a tabcontrol. On the 3rd tabpage is a combobox, set with DropDownStyle as "DropDown" to allow free text to be entered as well as selecting from the loaded items. My application allows for values to be saved to disk and reloaded.
What I'm finding is that when then application is 1st started, if the tabpage containing the combobox has not yet been accessed, and a value is loaded from disk by the application into the combox's text property ( I have verified this using by Debug.Print statement, and using a Watch), when the tabpage containing the combobox is selected (I add a break on the "TabControl1_SelectedIndexChanged" event to check the text value) the text value is cleared to equal "".
[Code]...