• 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

    • I managed to buy the original Hellblade: Senua’s Sacrifice through the ps app on my phone even though it was not showing up in the ps store when browsing from my ps5 it was buggy but more or less O.K.ish to play… I wonder if this original added version is funny fixed up for ps5 play
    • Download old Windows Startup Sounds @ https://www.winhistory.de/more/winstart/winstart_en.htm
    • Surface Copilot+ PCs coming to classrooms from July 22, turbocharged with on-device AI by Paul Hill Microsoft has announced that it’s launching the new Surface Pro 12-inch and Surface Laptop 13-inch models specifically for education customers from July 22. The Redmond giant said that these devices are being launched as a direct response to feedback from educators who want practicality and ease of use in their diverse classrooms. These are both Copilot+ PCs so teachers and students will be able to leverage the latest AI features thanks to the dedicated Neural Processing Units (NPUs) that allow for on-device AI. The on-device AI, aside from delivering well-known features like Recall, will enable new education features such as a new app Microsoft is working on called Microsoft Learning Zone. Microsoft Learning Zone will allow teachers to create personalized lessons by adapting content from trusted sources like OpenStax, generating interactive games with Kahoot, and tracking students progress. Microsoft expects this to help teachers save time and deliver a more flexible and engaging classroom. Another AI feature that will be available is Click to Do. This lets students highlight text or images and get contextual help. It can be used to summarize a paragraph or explain a graph. To activate it, students can press the Windows key and click. This feature runs entirely on device so inputs to the AI are secure and you don’t need to ever worry about third-parties seeing. Finally, these devices will also have accessibility features such as Voice Access which lets you navigate with speech and Live Captions which provide real-time subtitles and translations for spoken content. These make the devices more inclusive for students with disabilities. Regarding security, these laptops come with the Microsoft Pluton security chip directly integrated into the processor for protecting sensitive data. It can protect data such as passwords and sign-ins, even if your device is stolen. Thanks to automatic Windows Updates, schools never need to worry about falling behind on updates either. With the impending demise of Windows 10 in mid-October, these Surface devices arrive just in time for schools looking for somewhere to upgrade to. Aside from AI features and security, Microsoft is also pushing other key features including easy repair with replacement components at the Microsoft Store and iFixit, their lightweight design and all-day battery life making them ideal for carrying and surviving the school day, and their compatibility with popular education apps such as TestNav, Google Classroom, Minecraft Education, and Adobe Express.
  • Recent Achievements

    • Rising Star
      Phillip0web went up a rank
      Rising Star
    • One Month Later
      Epaminombas earned a badge
      One Month Later
    • One Year In
      Bert Fershner earned a badge
      One Year In
    • Reacting Well
      ChrisOdinUK earned a badge
      Reacting Well
    • One Year In
      Steviant earned a badge
      One Year In
  • Popular Contributors

    1. 1
      +primortal
      545
    2. 2
      ATLien_0
      205
    3. 3
      +FloatingFatMan
      170
    4. 4
      Michael Scrip
      151
    5. 5
      Som
      131
  • Tell a friend

    Love Neowin? Tell a friend!