|
HAHAHA_NEXT wrote:
Debuggin for me is a pain in the $ss
Are you a programmer?
Well, you can use some class like Trace or Debug which have some methods to write information you want in a file,event viewer or output window.
Mazy
"A bank is a place that will lend you money if you can prove that you don't need it." - Bob Hope
|
|
|
|
|
Mazdak wrote:
Are you a programmer?
Sheesh, no kidding! This is part of the trade. Get used to it!
Trace and Debug with the default and custom TraceListener implementations can tell you some things, but it's not even CLOSE to what properly debugging your app and checking the state of variables throughout your object and related objects can tell you.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Heath Stewart wrote:
but it's not even CLOSE to what properly debugging your app and checking the state of variables throughout your object and related objects can tell you
Yah, but I thought it could be ease some of his pain in *ss.
Mazy
"A bank is a place that will lend you money if you can prove that you don't need it." - Bob Hope
|
|
|
|
|
but it's not even CLOSE to what properly debugging your app and checking the state of variables throughout your object and related objects can tell you
1) This i know, but this is the slowest way of doing things, and works well when you can test a small part of your program.
2) As experienced programmers you must have other tricks then that. For example, i put a comment //WORKS on the part which works, so not checking it.
Believeing that there is no more tricks, is like beliving that 2 + 2 is the only thing they teach us in math.
|
|
|
|
|
I believe someone wants a System.Diagnostics.FixIt class. Debugger tools are like any other tool: A hammer drives nails and it can help build a house but it doesn't do that for you automatically. I could tell you how to use the VS.Net Debugger but you'll never gleen the useful tactics and tricks to spot errors easily without actually doing it yourself.
The .Net SDK comes with a debugger...its functional but lacks bells and whistles. The debugger in VS.Net works well enough. But it just spits out data for you to figure out. The rest is up to you to figure out.
For general debugging behavior you should look at System.Diagnostics.Debugger and System.Diagnostics.Debug (or heck the System.Diagnostcis namespace).
|
|
|
|
|
I have un array of byte[] below:
<br />
byte[] img = new byte[78000]<br />
...<br />
Recept raw data from a fingerprint scanner<br />
...<br />
This array contains the data of a image with 300 of height and 260 of width (total = 300 x 260 = 78000).
Each position in the array (byte = 256) is a pixel (256 shades of gray).
How I create the Image object with this data?
Thanks for all response,
Alexsander "Axia" Antunes
|
|
|
|
|
You can write this to MemoryStream with WriteByte method then pass it in a cunstructor of Bitmap class or use Image.FromStream method.
Mazy
"A bank is a place that will lend you money if you can prove that you don't need it." - Bob Hope
|
|
|
|
|
This actually wouldn't work. A Bitmap (as do all images) contain header information. This raw data does not. This is a similar situation with digital cameras and digital SLRs that can save RAW image data. They need to have a program that translates the RAW data into an image.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Where I have information about header of BMP images?
Thanks for all help!
Alexsander "Axia" Antunes
|
|
|
|
|
Heath Stewart wrote:
A Bitmap (as do all images) contain header information
Well, what about if he writes them in that stream too?
Mazy
"A bank is a place that will lend you money if you can prove that you don't need it." - Bob Hope
|
|
|
|
|
It would be possible to create all the information and serialize that (not .NET serialization, mind you) that to a stream, but it is incredibly error-prone and pain in the butt. For an app I wrote I did something similar that extracts icons and I have to serialize these correctly using the chain of sturctures required. Believe me, you don't want to do that!
As you saw in my other answer, .NET does provide a way to do this. You could always P/Invoke native APIs like CreateDIBitmap to accomplish this as well. These basically take minimal information and create and serialize the structures for your. I was about to answer that way when I found that you can't (easily) get a Bitmap from a handle and noticed the other constructor I've never cared to find before (that basically does the same thing I was going to mention with native APIs).
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
The Bitmap class and related classes and structs actually support this. You can use the constructor Bitmap(int, int, int, PixelFormat, IntPtr) to create a bitmap of a known size, source format, and the address of the first element in the data buffer. Basically, it uses similar functionality from GDI like the CreateDIBitmap API (although internally it uses GDI+ APIs).
This is untested, but should give you some idea
byte[] img = new byte[7800];
GCHandle gch = GCHandle.Alloc(img);
Bitmap bmp = new Bitmap(300, 260, 2400, PixelFormat.Format25bppRgb,
gch.AddrOfPinnedObject());
gch.Free(); I don't currently have any raw data to try it out on, but this seems to be the way that is similar to how it's done in good ol' C/C++.
Let me know if it works. My digital camera outputs RAW images and eventually I was going to write a new front end since the one that came with it sucks.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Ok, I got the answer.
Mazy
"A bank is a place that will lend you money if you can prove that you don't need it." - Bob Hope
|
|
|
|
|
In the code below:
Bitmap bmp = new Bitmap(300, 260, 2400, PixelFormat.Format24bppRgb, gch.AddrOfPinnedObject());
What is the third parameter (2400)? In th VS Documentation is the stride parameter, what is this?
Thanks for all,
Alexsander "Axia" Antunes
|
|
|
|
|
It's the number of bites in a single row. Since your image is 300 pixels wide and you're dealing with a byte[] , which should actually be 300 to represent 300 bytes. I was multiplying by 8 to get the number of bits, which is incorrect (not sure what I was thinking).
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
My image is 300 of heigth and 260 of width.
How value is for stride? 2080(260 * 8 bits) or 2400 (300 * 8 bits)
Alexsander "Axia" Antunes
|
|
|
|
|
No, like I said - I made a mistake. Just use 260 for the value, and swap 260 and 300 for the first two params since I accidentally reversed your width and height.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
My image is 300 of heigth and 260 of width.
How value is for stride? 2080(260 * 8 bits) or 2400 (300 * 8 bits)
But in 2 cases I have the following error:
Additional information: Identification is not fixed.
Alexsander "Axia" Antunes
|
|
|
|
|
One what like do you get this? Debug your application and find out exactly where the error is happening.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
How can I draw on a nonclient area of a form ? I mean the border and the caption. Before I started using C#, I just used WM_NCPAINT message to do the job, but I have no ideas how to do it in C# now ? Can anyone help me ?
Also, how can I get the size of the nonclient area ?
Regards, Desmond
|
|
|
|
|
Maybe I somehow have to import a some procedure form Win32 API, using DLLImport attribute ?
|
|
|
|
|
Override WndProc and continue to use WM_NCPAINT . In your handler, you can get a Graphics from several means, such as Graphics.FromHwnd , passing the HWND (an IntPtr ) that you get along with the Message that you're handling in WndProc .
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Thanks, but it's a bit hard for me to understand this. Could you please support me with a basic code example ?
|
|
|
|
|
You do just like you did in C++, only using managed code. If you need examples, try http://www.google.com[^]. There's many examples out there I've seen in the past.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Did so -> problem solved. Thanks. Note that I actually didn't came from C++, but from Borland Delphi (it's not that bad, really).
|
|
|
|