• 0

[VB6 to VB.net] SetPixel


Question

i'm not exactly looking forward to moving over to VB.net to me VB6 is better but i'm just going to have to learn both

(VB6 for my own stuff/.Net for other...)

anyway my question is

VB.net removed the pset function and its a hassle to call Get/SetPixel API from .net

i had a look and found that VB.Net includes the SetPixel function within its library thats good but the problem is

it seems to only accept fixed data e.g. Color.Black, Color.White

Dim pixelColor As Color = myBitmap.GetPixel(50, 50)

I love doing per-pixel manipulation is .net going to stop me from doing this?

can i still do something like this

Dim Color1 As Long
Dim Color2 As Long

Dim Red1 As Long
Dim Green1 As Long
Dim Blue1 As Long

Dim Red2 As Long
Dim Green2 As Long
Dim Blue2 As Long

Dim X As Long
Dim Y As Long

	For X = 0 To Picture1.ScaleWidth - 1
		For Y = 0 To Picture1.ScaleHeight - 1
			Color1 = GetPixel(Picture1.hDC, X, Y)
			Color2 = GetPixel(Picture2.hDC, X, Y)

			Red1 = Fix(Color1 Mod 256)
			Green1 = Fix((Color1 Mod 65536) / 256)
			Blue1 = Fix((Color1 Mod 16777216) / 65536)

			Red2 = Fix(Color2 Mod 256)
			Green2 = Fix((Color2 Mod 65536) / 256)
			Blue2 = Fix((Color2 Mod 16777216) / 65536)


			Red1 = (Red1 + Red2) / 2
			Green1 = (Green1 + Green2) / 2
			Blue1 = (Blue1 + Blue2) / 2

			SetPixel Picture2.hDC, X, Y, RGB(Red1, Green1, Blue1)
		Next Y

		Picture2.Refresh
		DoEvents
	Next X

can someone show me an equivalent to that in .net? or should i just give up on .net all together

(I would like to use Dibits, However i'd like to take one step at a time :))

Link to comment
https://www.neowin.net/forum/topic/578353-vb6-to-vbnet-setpixel/
Share on other sites

7 answers to this question

Recommended Posts

  • 0

In .NET, a Color is represented by a 'Color' object. Colors.Red is just a color with 255,255,0,0 (red, full opacity) in it. You can pass any Color object to the SetPixel method, so you can make your own Color object very easily.

There's a static method in Color, FromArgb that should do what you want.

Just pass Color.FromArgb(Red,Blue,Green) to the SetPixel method.

  • 0
  MioTheGreat said:
In .NET, a Color is represented by a 'Color' object. Colors.Red is just a color with 255,255,0,0 (red, full opacity) in it. You can pass any Color object to the SetPixel method, so you can make your own Color object very easily.

There's a static method in Color, FromArgb that should do what you want.

Just pass Color.FromArgb(Red,Blue,Green) to the SetPixel method.

is there a To Argb method?

like if i use getpixel can i break it down? (ill check soon)

also umm wouldn't that be much slower? is there a way to get around using the color object and just hand it decimals? :D

if not then thats ok whats Dibits like? does it still exist or can i use its api call? (i'm not liking this new programming language)

  • 0

A color object is just a class that contains 4 byte objects, A, R, G, and B. All the .NET methods that do ANYTHING with color will expect you to hand it a System.Drawing.Color object. You'll never see passing of just the component values around.

.NET is overall much better than vb6. .NET is very object oriented, has good error handling, etc. vb6 just....sucked.

  • 0
  MioTheGreat said:
A color object is just a class that contains 4 byte objects, A, R, G, and B. All the .NET methods that do ANYTHING with color will expect you to hand it a System.Drawing.Color object. You'll never see passing of just the component values around.

.NET is overall much better than vb6. .NET is very object oriented, has good error handling, etc. vb6 just....sucked.

I don't know

VB6 just....its perfect i love it Lol

VB.NET on the other hand....makes me sick to be honest

I can't accept the fact that VB.net is a newer version then VB6 rather then its a completely different language all together with somewhat similar syntax

the code just looks messier and slower (even though it runs faster) which means they are hiding more from the programmer

OO may be good for some but...if this is whats involved, Then no thanks ^_^

I'll try the setpixel stuff out maybe i can write a DLL to bring back some functionality from VB6 that i liked :)

  • 0

An unhandled exception of type 'System.NullReferenceException' occurred in WindowsApplication1.exe

Additional information: Object reference not set to an instance of an object.

CType(PictureBox1.Image, Bitmap).SetPixel(x, y, Color.Black)

I just wan't to cry......theres no way in hell that .net is better then VB6

only benefits i've seen so far is speed in run time nothing else

and since speed isn't an issue....

Edit:

Ahh forget it thanks everyone for your help but vb.net just isn't worth it i'll stick to vb6/c++/asm

shouldn't have to hassle so much to use a simple function

setpixel hdc, x, y, cr

^ That was the best function ever and they ruined it with all this object crap

don't get me wrong objects are great but they've just over done it the only objects i want to see

are the ones i've written not to confuse them with api calls

Edited by DDStriker
  • 0

Er. Really, sticking with vb6 is a pretty crappy idea. It'll hopefully be dying out soon. More and more is going .NET because it's simply better.

  Quote
the code just looks messier and slower (even though it runs faster) which means they are hiding more from the programmer

That's because you're still thinking like a vb6 developer. The code in .NET can be much cleaner and more sensible than the stuff in .NET. You have to rid yourself of the poor programming practices vb6 enforced.

A NullReferenceException means you've got an object somewhere that is null, and you tried to use it. Post the full details of the exception for more information.

Most likely, your PictureBox1.Image casted to a Bitmap was null. Are you sure the Image was set?

  Quote
only benefits i've seen so far is speed in run time nothing else

You have to remember that VB.NET an entirely different language to vb6. It shares some syntax, but the underlying principles have been radically altered for the better.

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

    • No registered users viewing this page.
  • Posts

    • Oh for crying out loud, more AI rubbish. It gets everywhere, well almost. i use Numbers on the Mac, which does what I need, at the moment I can turn any AI off, but maybe i should go back to LibreOffice.
    • Google Sheets gets exciting Gemini feature that is still missing in Excel by Usama Jawad We recently learned that Copilot in Microsoft Excel got a big upgrade in the form of context awareness, which is in addition to the formula generation capabilities that were made available earlier. However, no firm has really won the AI race yet, and Google has now edged ahead in at least one domain today, by adding Gemini text generation capabilities in Google Sheets. In a blog post, Google has announced that while you can already leverage Gemini in Sheets to generate charts and insights, you can now generate text using its new AI function too. This function can utilize a natural language prompt and an optional context window to summarize and generate text, categorize information, and perform sentiment analysis. The syntax for the AI function is fairly straightforward: AI("prompt",[optional range]) So you can invoke the Gemini function as follows: =AI("Perform sentiment analysis on the emails sent by the customers to the barbershop.", C2) Or: =AI("Create an email to the reviewer addressing specific items in their reviews.", A2:G2) It is very interesting to note that a similar capability is not offered by Copilot in Excel yet. In my testing, I did get Copilot to generate charts, formulas, and do some text formatting, it simply doesn't seem to have the ability to actually generate textual data directly in a workbook just yet. While an input range isn't mandatory, Google recommends using it for the best results. Just like any cell using a formula, you can refresh the AI cell, and get an indicator about its sync state. That said, a limitation that is present with regards to the AI function is that it only works for the first 200 selected cells in your range. Once that generation completes, you can select more cells and repeat the process, which is a slightly cumbersome experience. The rollout for this capability has begun across Business, Enterprise, Education, Education Premium, AI Pro, and Ultra plans, so it should be available to everyone sooner rather than later. In the meantime, you can view details about the AI function here.
    • Space Marine 2 gains a horde mode and DLSS 4 with new Siege update by Pulasthi Ariyasinghe Warhammer 40,000: Space Marine 2 just received its next major update. Dubbed the Siege update, it is finally bringing the long-promised horde mode for the third-person action game, as well as new tech for PC gamers. The Siege mode takes place on a fortified Imperial stronghold on Kadaku that is enduring endless attacks by Tyranids and Thousand Sons. There are three sections in total that players will defend in order before circling back to the original position, fighting away thousands of enemies in five waves before swapping locations. To give players a small break, there's a one-minute gap between each wave to resupply and purchase perks from the points they collect while in battle. Players can call in AI-controlled specialized soldiers, Space Marines, or even a Dreadnought to help out if the waves get a little too tough. To cap it all off, every fifth wave a boss encounter kicks off. There are 15 waves to go through in a single session, but parties can also kick off an endless mode at the end of these to see how far they can get. "Siege Mode expands on our PVE operations, emphasizing endless enemy waves that challenge even the strongest teams," says Focus Entertainment, describing the new mode. "When overwhelmed, players may call reinforcements for assistance. Engage in intense battles across three distinctive sectors, each requiring strategic adaptation. Side objectives emerge during combat, providing essential resources used to summon elite Space Marines or a formidable Dreadnought, drastically shifting battlefield dynamics. Over on PC, the studio has added two new options. One is RTAO (Ray-Traced Ambient Occlusion), though this is currently listed as an experimental feature. Next, Nvidia 5000 series graphics card owners can now enable DLSS 4 for better upscaling tech as well as multi-frame generation. The complete patch notes for Patch 8, which includes details on the balance changes, can be found here. The Warhammer 40,000: Space Marine 2 Siege update is now available on PC, Xbox Series X|S, and PlayStation 5.
    • Microsoft updates Media Creation Tool with a newer Windows 11 release by Taras Buria If you want to download a Windows 11 image or create an install media, the Media Creation Tool app is one of the best options—simple, fast, and, more importantly, official. While there are other useful alternatives, such as Rufus, Media Creation Tool remains the default choice for those who simply want a clean Windows 11 installation on a supported computer. Thanks to the latest MCT update, you will have to deal with fewer updates after installing Windows 11. Microsoft has quietly updated the Media Creation Tool app so that it downloads the latest Windows 11 release, version 24H2, with build number 26100.4349. This is the most recent public Windows 11 update (June 2025 Patch Tuesday), which eliminates the need to download large updates for your PC after installing the operating system. You can download Media Creation Tool from the official Windows 11 website. If you are familiar with it, this simple app can generate a Windows 11 image with the language you need or create a bootable USB media. Note that it only works on Windows, so Linux or macOS users have to download Windows images directly from the official website and then use apps that are available on their platforms. Another thing worth noting is Media Creation Tool is not the right choice if you want to install Windows 11 on an unsupported PC. In such a case, you can use MCT to download an ISO and then create a modified install media with apps like Rufus or Ventoy as described in our dedicated guide. If you want a more exotic Windows 11 Edition, try the Oofhours Media Tool, which allows you to select Windows 10 or 11, architecture (x64, x86, or ARM64), language, and edition. In addition to standard Home and Pro, the application can download non-mainstream SKUs, such as Enterprise, Education, or Professional for Workstations. Via: Deskmodder
  • Recent Achievements

    • Conversation Starter
      Kavin25 earned a badge
      Conversation Starter
    • One Month Later
      Leonard grant earned a badge
      One Month Later
    • Week One Done
      pcdoctorsnet earned a badge
      Week One Done
    • Rising Star
      Phillip0web went up a rank
      Rising Star
    • One Month Later
      Epaminombas earned a badge
      One Month Later
  • Popular Contributors

    1. 1
      +primortal
      539
    2. 2
      ATLien_0
      207
    3. 3
      +FloatingFatMan
      175
    4. 4
      Michael Scrip
      148
    5. 5
      snowy owl
      118
  • Tell a friend

    Love Neowin? Tell a friend!