Avoiding Flicker When Drawing Multiple Bitmaps With Graphics.DrawImage
Mar 15, 2011
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].....
View 11 Replies
ADVERTISEMENT
Jan 22, 2011
I used to program with Visual Basic 6, so I have alot of old programs that I'm updating, plus I'm learning the new VB2008 methods. I'm writing a program that replaces the old "BitBlit" function which is no longer supported by Visual Basic 2008. It involves three picture boxes, one holds the sprite bitmap, a second holds the mask (silhouette) of the sprite bitmap, and a third has a background image.
[Code]...
View 3 Replies
Jan 13, 2010
how to draw an unknown amount of images to a form
the amount of images should be determined during runtime.
View 1 Replies
Jun 1, 2010
Well 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.
View 8 Replies
Dec 21, 2010
Graphics.DrawImage loses resolution
View 13 Replies
Jun 5, 2010
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].....
View 1 Replies
Feb 20, 2009
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]...
View 3 Replies
Dec 13, 2010
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.
View 9 Replies
Aug 28, 2010
It seems difficult to find good information on working with bitmaps. Specifically I am looking for .NET info on getting tile graphics to the screen. What I know so far is this. I need a picturebox for the display. I need a second picture box for a back buffer and then I need a third picturebox for the tiles that I would copy to the back buffer which then gets flipped to the screen.I need this to be done with .net controls and classes or functions and etc. If anyone has good information on this, please let me know. I am using visual basic 2008 express edition.
View 2 Replies
Nov 10, 2010
When I add or modify controls on the form the graphics are redrawn many times over.The more graphics that are drawn the slower the machine gets.
View 1 Replies
Feb 5, 2009
I am using a MDI form and child forms. Now I don't like the standard back colour of mdi form so I got code on the net which paints a gradient colour to the mdi. So far it is working okay.Now the problem is when I load a child form or close it or do a similar activity then it causes flicker in the mdi background. This gets pretty annoying at times and you see the background flicker.
View 2 Replies
May 23, 2010
I have a character that I made in graphics and when an enemy attacks the character, I want it to flicker, how would I do this?
View 2 Replies
Dec 1, 2008
I'm having trouble with a football program that I'm writing. I'm finding that there is a lot of flicker coming from the program having to redrawn 36 (Australian football) small circles with numbers in them about 10 times per second (or even more) as the players move.I'm just using basic e.graphics. fillellipse.code in the Paint section of the form. I then use me.invalidate on the timer's tick routine.I haven't touched this graphical stuff for a while and I vaguely remember there being some ways to help this. There are also things like the ground which I'd like to not have redrawn because they don't have to as they don't move. I remember that you can do this but I don't remember how.
View 2 Replies
Aug 14, 2009
drawing text on a window which is not the current form's window.I remember doing this in Win32 api with getwindowdc(handle) to obtain a DC for the Window, then textout() on the DC.
View 2 Replies
Apr 17, 2010
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]......
View 7 Replies
Apr 24, 2010
I'm currently working on a project where I need to bind 3 different bitmaps.Bitmap1, Bitmap2, Bitmap3.
I tried :
bitmaps = Bitmap1 & Bitmap2 & Bitmap3
But of course, that didn't work.If it's possible, I also need Bitmap1 and Bitmap3 to have a fixed size and Bitmap2 to change its width if the form is resized.
View 3 Replies
Dec 26, 2009
I want to know if there's a faster way to draw images onto a picturebox based on a list of point.
vb
Dim MyPoints as New List(Of Point)
Dim MyBitmap as New Bitmap("C:MyBitmap.PNG")
[code]....
Now, This code may be a little sloppy, but I just put it together. The image isn't very simple, but it's simple enough. After about 10 images that need to be drawn, it starts to get slow.What would I need to do to ensure it draws the images faster? If I made the image itself smaller would it make it go faster?
View 3 Replies
May 23, 2009
Is it possible to convert an object form System.Drawing.Graphics to System.Drawing.Image?
View 4 Replies
Sep 14, 2010
I have the following code block. I'm tired of typing the same IF statement to check if the string has any lenght before assignning them to the class properties of Employee.
Is there any better to accomplish this?
Dim title = txtTitle.Text.Trim
Dim firstName = txtFirstName.Text.Trim
[code].....
View 6 Replies
Jan 20, 2010
I have a System.Drawing.Graphics g, which draw something in a PictureBox. Now I want to export this pGraphics to a new System.DrawingImage pImage (or Bitmap). But how?
Dim pImage As Bitmap
Dim g As Graphics
g = Graphics.FromImage(b)
[Code].....
View 9 Replies
Mar 10, 2010
I have two graphics I'm trying to superimpose into one, then display in a DataGridViewImage cell...The Value property of a DataGridViewImage is an Image type.
Dim Image1 As System.Drawing.Image = imgl_Imagelist1.Images(0)
Dim Image2 As New Bitmap(imgl_ImageList2.Images(0))
Dim DualGraphic As Graphics = Graphics.FromImage(Image1)
[code].....
View 3 Replies
Feb 20, 2009
I have been trying to draw spirals in vb.net. Here's a link to the formula [URL]. here's what I was trying to do. The code below is just drawing points which I was later going to edit to connect from point to point as soon as i got the spiral function working.
Function Draw()
Dim iImageCenterPointH As Integer = pbOut.Height / 2
Dim iImageCenterPointW As Integer = pbOut.Width / 2
Dim iCircleSpace As Integer = 10
[Code] .....
I am not 100% the output is matching the formula here's what I am getting atm ...
View 7 Replies
Oct 21, 2010
I know this is probably not going to be simple, I tried searching around, but couldn't find anything. I am using some code to 'draw' text in a custom format to a panel with a custom bitmapped region (custom shape).Here is the code that writes the text inside a specified area:
g = LeftControlPanelV2.Panel1.CreateGraphics
Using fnt As New Font(New FontFamily("Arial"), 9, FontStyle.Regular, GraphicsUnit.Point)
Dim sf As StringFormat = StringFormat.GenericDefault
sf.Trimming = StringTrimming.EllipsisWord
[code]....
Obviously the text is not really located on the panel, but looks like it as it's drawn on top of the panel. So, when the panel or form that the panel is attached to moves, I lose the text. I though I could just call back to writing the text when the panel/form arrives at the correct place, while clunky, it works to a degree. I was hoping there was a better way of doing this, so that the text doesn't disappear when moving controls and I don't have to make repeated calls to the same drawing text over and over and over...
Edit: Should probably add that there will be 5 different panels each with their own custom drawn text, and all 5 need to move at the same time...
View 2 Replies
Aug 3, 2010
I have been researching for a while, and now am converting my project from using forms to do transparencies to just drawing the images. At first, I thought picturebox's could be used, but can't figure out how to do transparencies on those, so I settled for drawing images. Here is what I am using: [Code] Now, I know these are not controls, but is there any possible way to make these drawn images have a click-able event fire?
View 4 Replies
Jul 15, 2010
Rather than create a Form and use Graphics generated via the CreateGraphics Method, how does a System.Drawing.Graphics Object get built?
View 16 Replies
Sep 13, 2009
I have been looking through the code bank and i cant find anything that is helping me with my problem what i have is a print button that when clicked it goes to my print preview page, then i can print the file. i have got all the other controls on my page to display correctly using this example
e.Graphics.DrawString(sType, New Font("Arial", 10, FontStyle.Underline), Brushes.Black, 110, 650)
but how can i get my ListView header and content to preview on the page as well. my listView has 5 columns and i am using the PrintDocument control.
View 10 Replies
Apr 9, 2011
I have been having problems getting a vb.net app to have the same responsiveness to drawing and manipulating graphics as I had with vb6 and the API. In my journeys here at this forum and elsewhere, I understand that GDI+ is pretty much a gonner, and that other avenues should be explored. For instance, I have been doing my initial research into WPF and it seems that maybe it would be a more natural shift from GDI+ than moving to DirectX or OpenGL.
View 8 Replies
Nov 4, 2011
I am trying to draw a bus route as a simple sequence of lines. Nothing fancy. But instead of lines, I'm getting wedges. Initially I was fine with this, because the wedges sortof look like arrows and always face towards the second point. But now I want to improve the look, and the wedges are becoming a big problem.
My suspicion is some sort of floating-point issue due to the graphics transform (lat/lons are fed in and the transform turns them into x/y on the bitmap [assuming lat/lon is euclidean is accurate enough for my purposes], so the scaling is several orders of magnitude).
Screenshot:
It actually kind of looks like the line was split into two triangles but only one of them was drawn.
Relevant Code (note: drawing is done asynchronously, which is why I'm creating a bitmap):
'-- Creating the transform --'
Dim bitmap = New Bitmap(Math.Max(1, PictureBox1.Width), Math.Max(1, PictureBox1.Height))
Dim g = Graphics.FromImage(bitmap)
[Code].....
Using DrawLines instead of DrawLine solves the issue (but why?) Increasing the pen thickness makes the issue go away (but the lines are too thick) Zooming out (increasing lat/lon view window) makes the issue go away, eventually (but I want to zoom in!)
View 2 Replies
Nov 23, 2011
I have 1 image in picturebox. Now I draw some rectangles. I'm trying clear the image (only rectangles and left the image) without success.
Private Sub btnImageSelection_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnImageSelection.Click
Dim intImages As Integer = 0
Dim intImagesLine As Integer = 0
Dim intImagesColune As Integer = 0
picImage.Image = PictureBox1.Image
[Code] .....
The cycles for is for show the rectangules and works fine. but
i.Clear(Color.Blue)
The image is clear but the rectangles are showed and then unshowed.
View 19 Replies
Jun 7, 2011
I need to make a basic drawing program in VB that can do three things:
"Draw" with a brush of some sort
Clear the screen
Perform a flood-fill (paintbucket action)
I decided to do the first two tasks first, and got them to work, but the third task completely eludes me. Every way I try seems to pile on exceptions, and every flood-fill algorithm I find seems to require a bitmap, rather than a Graphics() object. Is there any way to accomplish a flood-fill using a Graphics object, or must I restart the project using a bitmap?
Source code for reference:
CODE:
View 2 Replies