• 0

[VB.NET] Form Redraw?


Question

this is probably extremely easy to fix, but here goes.

i'm using a graphicspen to draw on a picturebox. however, every time i minimize/move another window oveer it, it disappears. i seem to remember a .ReDraw property in VB6, but it's not there. What's the .Net equivelant?

(Visual Basic, VS.NET 2003)

Link to comment
https://www.neowin.net/forum/topic/352258-vbnet-form-redraw/
Share on other sites

8 answers to this question

Recommended Posts

  • 0
  AMDPOX said:
this is probably extremely easy to fix, but here goes.

i'm using a graphicspen to draw on a picturebox.  however, every time i minimize/move another window oveer it, it disappears.  i seem to remember a .ReDraw property in VB6, but it's not there.  What's the .Net equivelant?

(Visual Basic, VS.NET 2003)

586306143[/snapback]

.Paint() usually forces whatever component it is to redraw itself.

  • 0
  AMDPOX said:
this is probably extremely easy to fix, but here goes.

i'm using a graphicspen to draw on a picturebox.? however, every time i minimize/move another window oveer it, it disappears.? i seem to remember a .ReDraw property in VB6, but it's not there.? What's the .Net equivelant?

(Visual Basic, VS.NET 2003)

586306143[/snapback]

.Invalidate() forces a redraw

If you use .Paint() you calling the sub directly, which isn't a good idea in this situation. It shouldn't hurt anything, but it's just better practice to use .Invalidate().

  • 0

i've tried:

    Private Sub Form1_LocationChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.LocationChanged
        pD.Invalidate()
    End Sub

    Private Sub Form1_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.LostFocus
        pD.Invalidate()
    End Sub

and

    Private Sub Form1_LocationChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.LocationChanged
        Form1.Invalidate()
    End Sub

    Private Sub Form1_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.LostFocus
        Form1.Invalidate()
    End Sub

where pD is the picturebox. But it appears that b the Invalidate are simply clearing the the picturebox. Paint() seems to be an event, not a method....?

  • 0
  AMDPOX said:
this is probably extremely easy to fix, but here goes.

i'm using a graphicspen to draw on a picturebox.  however, every time i minimize/move another window oveer it, it disappears.  i seem to remember a .ReDraw property in VB6, but it's not there.  What's the .Net equivelant?

(Visual Basic, VS.NET 2003)

586306143[/snapback]

Are you drawing on the picture box during its paint event? If not, do so. Then, in your form's resize and/or move event, invalidate the picturebox.

Edited by weenur
  • 0
  AMDPOX said:
i have the drawing commands in the MouseDown and MouseMove events... i dont see how i could put them in .Paint() and leave the functionality the same.. :(

586311835[/snapback]

Ah, ok. Makes sense now.

You need to draw to an image to preserve state. Create a class member variable that is an Image or Bitmap, and base it on the pictureBox.

Do this in the form constructor(New sub)

Dim g1 as Graphics = Graphics.FromHwnd(picturebox1.Handle)

' declared at the class level
picImg = new Bitmap(pictureBox1.ClientRectangle.Width, pictureBox1.ClientRectangle.Height, g1)

Handle the paint event for your picturebox and use the Graphics object to draw the image.

private sub PicPaint(sender as object, e as PaintEventArgs) handles pictureBox1.Paint

  e.Graphics.DrawImage(picImg, 0, 0)

end sub

Then in your mouse handler(up, i assume), draw on the image

  	end = new PointF(e.X, e.Y);

  	dim g2 as Graphics = Graphics.FromImage(picImg)
  	g2.DrawLine(Pens.Black, begin, end) ' or whatever
  	pictureBox1.Invalidate(false)

  • 0

I'm a newbie and pretty confused at this point. I have searched quite a bit for a solution to the same problem and have not been able to understand the code you posted.

I have a form with PictureBox1 and Button1 on it. My code looks like this:

Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button5.Click
     g = PictureBox1.CreateGraphics() 
     Dim g As Graphics
     Dim pRed As New Pen(Color.Red, 2)
     g.DrawLine(pRed, x1, y1, x2, y2)
End Sub

with x1, y1, x2, y2 being coordinates of the start and end of the line. That part works, but much like AMDPOX describes, when I minimize the window, the line disappears. I see that weenur has given him a reply with some code, but I guess I don't fully understand it.

When you say

  Quote
Do this in the form constructor(New sub)
I understand what the form constructor is, but not sure how I should make the New sub.

Also, I'm not sure what you mean by

  Quote
' declared at the class level
.

Could you show me what I should do with my code, and maybe paste the entire code of the form from top to bottom? I think that would help me understand the placement of each piece of code.

Again, I'm a newbie, so thank you for your patience with my 'newbieness' :)

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • Zen Browser 1.13b by Razvan Serea Zen Browser is a privacy-focused, open-source web browser built on Mozilla Firefox, offering users a secure and customizable browsing experience. It emphasizes privacy by blocking trackers, ads, and ensuring your data isn't collected. With Zen Mods, users can enhance their browser experience with various customization options, including features like split views and vertical tabs. The browser is designed for efficiency, providing fast browsing speeds and a lightweight interface. Zen Browser prioritizes user control over the browsing experience, offering a minimal yet powerful alternative to traditional web browsers while keeping your online activity private. Zen Browser’s DRM limitation Zen Browser currently lacks support for DRM-protected content, meaning streaming services like Netflix and HBO Max are inaccessible. This is due to the absence of a Widevine license, which requires significant costs and is financially unfeasible for the developer. Additionally, applying for this license would require Zen to be part of a larger company, similar to Mozilla or Brave. Therefore, DRM-protected media won't be supported in Zen Browser for the foreseeable future. Zen Browser offers features that improve user experience, privacy, and customization: Privacy-Focused: Blocks trackers and minimizes data collection. Automatic Updates: Keeps the browser updated with security patches. Zen Mods: Customizable themes and layouts. Workspaces: Organize tabs into different workspaces. Compact Mode: Maximizes screen space by minimizing UI elements. Zen Glance: Quick website previews. Split Views: View multiple tabs in the same window. Sidebar: Access bookmarks and tools quickly. Vertical Tabs: Manage tabs vertically. Container Tabs: Separate browsing sessions. Fast Profile Switcher: Switch between profiles easily. Tab Folders: Organize tabs into folders. Customizable UI: Personalize browser interface. Security Features: Inherits Firefox’s robust security. Fast Performance: Lightweight and optimized for speed. Zen Mods Customization: Deep customization with mods. Quick Access: Easy access to favorite websites. Open Source: Built on Mozilla Firefox with community collaboration. Community-Driven: Active development and feedback from users. GitHub Repository: Contribute and review the source code. Zen Browser 1.13b changes: New Features There's a new way to manage spaces, which brings a more intuitive and user-friendly experience Updated to firefox 139.0.4 Added support for Google safebrowsing for better security Collapsed toolbarr gets a slight UI redesign Fixes Fixed issues related to glance and split view Fixed performance issues and high GPU usage for some users Other small fixes and improvements Breaking Changes Customizable UI buttons at the bottom has been reset to a new default state Download: Zen Browser | 73.6 MB (Open Source) Download: Zen Browser ARM64 | Other Operating Systems View: Zen Browser Home Page | Screenshots 1 | 2 | Reddit Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • TBF, it has had PST support for quite a while now. But I still want them to add the ability to drag & drop between accounts / PSTs.
    • LibreOffice closes in on Microsoft Office, leaves Windows 7/8 behind in 25.8 Beta 1 by David Uzondu The Document Foundation has released LibreOffice 25.8 Beta 1 for public testing on Linux, macOS, and Windows. This is the second pre-release for the 25.8 cycle and the foundation says that the final, stable version of LibreOffice 25.8 is expected to land at the end of August 2025. Starting off with Writer, LibreOffice's Word, the developers have finally addressed some long-standing annoyances, including a new command to easily insert a paragraph break right before a table. This beta also introduces a useful privacy feature in its Auto-Redact tool, letting you strip all images from a document with a single option. To use it, go to Tools and select the Auto-Redact option: The application has improved its ability to handle different languages for punctuation, preventing mix-ups in multilingual documents. Other notable improvements have also been made. A new hyphenation rule lets you choose to prevent a word from splitting at the end of a page, moving the whole line to the next page instead. Microsoft Word has had this feature for years now. The Navigator now displays a handy tooltip with word and character counts for headings and their sub-outlines. Scrolling behavior when selecting text has been improved, making it less erratic. A new command with a keyboard shortcut was added for converting fields into plain text. Calc gets a lot of new functions that bring it closer to its competitors like Excel, including TEXTSPLIT, VSTACK, and WRAPROWS. Impress now properly supports embedded fonts in PPTX files, which should reduce headaches when sharing presentations with PowerPoint users. Alongside these additions, the project is also cleaning house; support for Windows 7, 8, and 8.1 has been completely dropped. There are also smaller UI tweaks across the suite, like allowing a single click to enter rotation mode for objects in Writer and Calc. macOS users get better integration, with proper support for native full screen mode and new window management features from the Sequoia update. In terms of performance, the team has optimized everything from loading huge DOC files and XLSX spreadsheets with tons of conditional formatting to simply switching between sheets in Calc. These improvements should be noticeable, especially when working with complex documents. A new application-wide "Viewer mode" has also been implemented, which opens all files in a read-only state for quick, safe viewing. On a related note, The Document Foundation has joined efforts by the likes of KDE to encourage Windows 10 users to switch to Linux. Also, you might have heard that Denmark, in a bid to lessen its reliance on Microsoft, has decided to make a full switch to LibreOffice, with plans to begin phasing out Office 365 in certain ministries as early as next month. If you're interested in this release, you can read the full release notes and download the binaries for your platform: Windows, macOS (Intel | Apple Silicon), or Linux (DEB | RPM). You can also get the latest stable version from our software stories page.
  • Recent Achievements

    • Week One Done
      julien02 earned a badge
      Week One Done
    • One Year In
      Drewidian1 earned a badge
      One Year In
    • Explorer
      Case_f went up a rank
      Explorer
    • Conversation Starter
      Jamie Smith earned a badge
      Conversation Starter
    • First Post
      NeoToad777 earned a badge
      First Post
  • Popular Contributors

    1. 1
      +primortal
      544
    2. 2
      ATLien_0
      227
    3. 3
      +FloatingFatMan
      160
    4. 4
      Michael Scrip
      113
    5. 5
      +Edouard
      104
  • Tell a friend

    Love Neowin? Tell a friend!