|
I assume an image exists, maybe as a result of
Image myImage=Image.FromFile(filepath);
I avoid background images.
If you want to get a pixel at a known coordinate (x,y), just do Color color=myImage.GetPixel(x,y);
If you want to pick a pixel with the mouse, and assuming the image is shown unscaled, you could use a MouseMove handler:
private void myPanel_MouseMove(object sender, MouseEventArgs e) {
color=myImage.GetPixel(e.X, e.Y);
myLabel.Text="Color at ("+e.X+", "+e.Y+") = "+color.ToString();
}
If you need more, I suggest you start reading the MSDN documentation on the relevant classes and methods.
|
|
|
|
|
Hello again done a few bits so far but the line graphics g = graphics e is causing a problem
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
Bitmap DrawArea;
Bitmap myImage;
public Form1()
{
DrawArea = new Bitmap(pictureBox1.Size.Width, pictureBox1.Size.Height);
pictureBox1.Image = DrawArea;
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
try
{
OpenFileDialog open = new OpenFileDialog();
open.Filter = "Image Files(*.jpg; *.jpeg; *.gif; *.bmp)|*.jpg; *.jpeg; *.gif; *.bmp";
if (open.ShowDialog() == DialogResult.OK)
{
pictureBox1.Image = new Bitmap(open.FileName);
Image myImage = Image.FromFile(open.FileName);
}
}
catch (Exception)
{
throw new ApplicationException("Failed loading image");
}
}
private void button2_Click(object sender, EventArgs e)
{
Graphics g = Graphics e;
g.DrawImage(myImage, 0, 0);
int w = myImage.Width;
int h = myImage.Height;
int GRIDSTEP = 20;
for (int x = 0; x < w; x += GRIDSTEP) g.DrawLine(Pens.Yellow, x, 0, x, h);
for (int y = 0; y < h; y += GRIDSTEP) g.DrawLine(Pens.Yellow, 0, y, w, y);
}
|
|
|
|
|
I strongly recommend you do all painting in a Paint handler. Maybe you should read this[^], it shows the normal way for painting (and animating) things.
|
|
|
|
|
This is one way to skin the cat:
1. Start with WPF, not winforms it'll be easier
2. Use a unform grid and create set up the elemt size to be square (height and width the same).
3. Bind the grid up to the converted color chart object you have so one element = one square
4. Use a template in each square, you need two templates:
a. A color template that fills in the square color with a SolidColorBrush
b. A color chart template that renders the colour as a symbol.
5. Apply a TemplateChooser to swap between the two.
Sorry this is a little light on detail, it's been a few months since I've handled WPF....Dalek Dave: There are many words that some find offensive, Homosexuality, Alcoholism, Religion, Visual Basic, Manchester United, Butter.
Pete o'Hanlon: If it wasn't insulting tools, I'd say you were dumber than a bag of spanners.
|
|
|
|
|
Hi everyone.
Quick question: is reference comparison atomic? For example:
Object a, b;
....
if (a == b)
....
....
Or should I use the following?
Interlocked.ReferenceEquals(a, b);
I imagine if the method exists it's because a==b wouldn't be atomic, which I guess makes sense because we're reading two references, and changes could occur in between the reads. Am I right?
Sorry about the trivial question, but I want to make sure and my brain isn't working very well at the moment (too much coding...).
Thanks modified on Tuesday, March 16, 2010 11:00 AM
|
|
|
|
|
What your code is doing is:
- read a
- read b
- perform the comparison
Any other thread may write between those two reads. Being "atomic" doesn't apply to the comparison as it only deals with local values.
There is no Interlocked.ReferenceEquals , you're just calling the inherited Object.ReferenceEquals .
AFAIK there is no way to read two references atomically (so that no other thread can write between the two reads).
|
|
|
|
|
Daniel Grunwald wrote: What your code is doing is:
- read a
- read b
- perform the comparison
Any other thread may write between those two reads. Being "atomic" doesn't apply to the comparison as it only deals with local values.
Exactly.
Daniel Grunwald wrote: There is no Interlocked.ReferenceEquals, you're just calling the inherited Object.ReferenceEquals.
True! I hadn't realised Interlocked didn't override the method.
Daniel Grunwald wrote: AFAIK there is no way to read two references atomically (so that no other thread can write between the two reads).
Well, surely with a lock.
Thanks for your answer.
|
|
|
|
|
Yes, you are right.
For reference types, using a==b will comapare references and not the values that we generally mean to have.
a.Equals(b) is a correct way to compare two reference types. This will comapre values and not memory address.
|
|
|
|
|
That's not what I meant. The issue wasn't whether I was comparing references or values, but whether it was atomic or not. It's not atomic.
Thanks anyway.
|
|
|
|
|
even if it were atomic, what good would it be, as the result of the comparison is to be used for some purpose while it also is volatile. What you probably want is a lock over some code of which the comparison is only a fraction.
lock(myLock) {
if (a==b) doSomething();
}
|
|
|
|
|
Yes, I know, but thanks. I was just wondering about it, I'm not actually using it anywhere.
It's pretty obvious that it isn't atomic, though, it's just that my brain isn't working properly and I wanted to make sure I got it right.
|
|
|
|
|
i created 100 buttons ( each with different text) with click even handlers daynamically.how can i display the text of the clicked button (how can i know which button is being clicked)?
|
|
|
|
|
Depending on how you did it the event handler is probably of the form
void Button_OnClick(object sender, eventargs args)
{
}
the variable sender is most likely the button (dependant upon your implementation), so you can probably do something like
void Button_OnClick(object sender, eventargs args)
{
Button buttonClicked = sender as Button;
if(buttonClicked == null)
return;
string buttonText = buttonClicked.Text;
}
If this doesn't answer your question, post some code and please remember the <pre> tags!Dalek Dave: There are many words that some find offensive, Homosexuality, Alcoholism, Religion, Visual Basic, Manchester United, Butter.
Pete o'Hanlon: If it wasn't insulting tools, I'd say you were dumber than a bag of spanners.
|
|
|
|
|
The sender item in the event parameters indicates which item was the origin of the event. You can get the text of the button by casting the sender to a Button and then read the Text property. Here's a quick sample
private void ButtonEventHandler(object sender, EventArgs e)
{
Button button = sender as Button;
if (button == null) return;
txtClicked.Text = button.Text;
} "WPF has many lovers. It's a veritable porn star!" - Josh Smith As Braveheart once said, "You can take our freedom but you'll never take our Hobnobs!" - Martin Hughes.
My blog | My articles | MoXAML PowerToys | Onyx
|
|
|
|
|
Now that is just frightening! Dalek Dave: There are many words that some find offensive, Homosexuality, Alcoholism, Religion, Visual Basic, Manchester United, Butter.
Pete o'Hanlon: If it wasn't insulting tools, I'd say you were dumber than a bag of spanners.
|
|
|
|
|
|
No problem! Dalek Dave: There are many words that some find offensive, Homosexuality, Alcoholism, Religion, Visual Basic, Manchester United, Butter.
Pete o'Hanlon: If it wasn't insulting tools, I'd say you were dumber than a bag of spanners.
|
|
|
|
|
|
You're welcome."WPF has many lovers. It's a veritable porn star!" - Josh Smith As Braveheart once said, "You can take our freedom but you'll never take our Hobnobs!" - Martin Hughes.
My blog | My articles | MoXAML PowerToys | Onyx
|
|
|
|
|
hi,
plz can anyone let me knw the code for implementing fix server in C# as client side coding is given in this site but i need to have both........in order to make the communication possible.
|
|
|
|
|
Either post this to the C# forum, or to the Quick Answers.
Don't just post it wherever it will fit as all you will do is annoy people.You should never use standby on an elephant. It always crashes when you lift the ears. - Mark Wallace
C/C++ (I dont see a huge difference between them, and the 'benefits' of C++ are questionable, who needs inheritance when you have copy and paste) - fat_boy
|
|
|
|
|
Priyanka doesn`t annoy, pandereta!
|
|
|
|
|
Yes he does, and why are you calling me a tambourine?
Did you know:
That by counting the rings on a tree trunk, you can tell how many other trees it has slept with.
|
|
|
|
|
You are a tambourine and a pim-pim man. I'm telling you the trues of the shipping man. You annois. I'm learning and my stickers says "4 days to hollidays". Pandereta counting-rings are you? Flipao!
|
|
|
|
|
Run run as fast as you can
You can't catch me I'm the Gingerbread man
"WPF has many lovers. It's a veritable porn star!" - Josh Smith As Braveheart once said, "You can take our freedom but you'll never take our Hobnobs!" - Martin Hughes.
My blog | My articles | MoXAML PowerToys | Onyx
|
|
|
|
|