|
She wouldn't recognise a listbox if it got up and bit her on the arse.
She works on the principle that "it works with telephones, so it should work here".
Did you know:
That by counting the rings on a tree trunk, you can tell how many other trees it has slept with.
|
|
|
|
|
A common way of showing that the program is running before it's actually usable is to use a splash screen to indicate that something is happening.
"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
|
|
|
|
|
|
Couple of things:
1) When you provide a link to something, it is considered polite to make it clickable. Highlight it, and use the "link" or "link[^]" widgets above the edit text box to do this. The second one of the two is the post common - it provides a "new window" option as well as a standard link.
2) What are you trying to achieve? You have drawn a house, and provided two text boxes, and a button. What do you want to occur when you fill in the boxes and press the button? "the house will go to that certain point" does not really explain what you want.
Did you know:
That by counting the rings on a tree trunk, you can tell how many other trees it has slept with.
|
|
|
|
|
|
So? It's not exactly difficult.
At present you are drawing a house - lets just draw a box:
Draw line (x1, y1) to (x2, y1)
Draw line (x2, y1) to (x2, y2)
Draw line (x2, y2) to (x1, y2)
Draw line (x1, y2) to (x1, y1) What happens if you add the numbers you read from the text boxes to each xN and yN coordinate appropriately? Would the box stay in the same place? Or would it move?
That is the basics; now it's up to you to see what happens.
Two little hints:
1) You house is to big to move much - draw it about half the size before you start playing with your code.
2) The drawing coordinates start at the top left of the window, rather than the bottom left as you probably expected - but you have probably realised that while drawing the house in the first place.
Did you know:
That by counting the rings on a tree trunk, you can tell how many other trees it has slept with.
|
|
|
|
|
|
Not too bad - it works! There are a couple of things you should look at:
1) If you must use CreateGraphics (and you should avoid it if you can), then you must Dispose it. Graphics handles are scarce resources, and should not be created willy-nilly. The easiest way is:
Pen gPen;
SolidBrush nBrush;
using (Graphics fx = CreateGraphics())
{
gPen = new Pen(Color.Green);
nBrush = new SolidBrush(Color.Blue);
float x = 0, y = 0;
x = float.Parse(textBox1.Text);
y = float.Parse(textBox2.Text);
fx.Clear(Color.Black);
fx.DrawLine(gPen, 200 + x, y, 0 + x, 100 + y);
fx.DrawLine(gPen, 200 + x, y, 400 + x, 100 + y);
fx.DrawRectangle(gPen, x, 100 + y, 400, 200);
fx.DrawRectangle(gPen, 25 + x, 175 + y, 150, 125);
fx.DrawEllipse(gPen, 150 + x, 225 + y, 10, 10);
fx.DrawRectangle(gPen, 250 + x, 150 + y, 100, 100);
fx.DrawLine(gPen, 250 + x, 200 + y, 300 + x, 200 + y);
fx.DrawLine(gPen, 300 + x, 150 + y, 300 + x, 250 + y);
}
2) You don't need to use floats - all the screen coordinates are int , so use those instead.
3) Please don't use Parse on textboxes (or other user input) - it will throw an exception when it fails to convert. For example, when the user empties the textbox, or types an alphabetic character. Use TryParse instead:
using (Graphics fx = CreateGraphics())
{
gPen = new Pen(Color.Green);
nBrush = new SolidBrush(Color.Blue);
int x = 0, y = 0;
if (int.TryParse(textBox1.Text, out x) && int.TryParse(textBox2.Text, out y))
{
fx.Clear(Color.Black);
...
}
}
TryParse never throws an exception, it returns true or false to say the conversion worked.
4) Avoid drawing everywhere (and don't create Graphics objects): draw in the Paint event. In the form designer, add a panel to your form and make it fit the available space (you can also change the Anchor properties to make it resize with the form). Double click the panel, and it will create a Paint event, and show you the code. Make it look like this:
private void panel1_Paint(object sender, PaintEventArgs e)
{
Graphics fx = e.Graphics;
Pen gPen = new Pen(Color.Green);
int x = 0, y = 0;
int.TryParse(textBox1.Text, out x);
int.TryParse(textBox2.Text, out y);
fx.Clear(Color.Black);
fx.DrawLine(gPen, 200 + x, y, 0 + x, 100 + y);
fx.DrawLine(gPen, 200 + x, y, 400 + x, 100 + y);
fx.DrawRectangle(gPen, x, 100 + y, 400, 200);
fx.DrawRectangle(gPen, 25 + x, 175 + y, 150, 125);
fx.DrawEllipse(gPen, 150 + x, 225 + y, 10, 10);
fx.DrawRectangle(gPen, 250 + x, 150 + y, 100, 100);
fx.DrawLine(gPen, 250 + x, 200 + y, 300 + x, 200 + y);
fx.DrawLine(gPen, 300 + x, 150 + y, 300 + x, 250 + y);
}
Because you don't create the Graphics object, you are not responsible for disposal.
Now all you need to do is create TextChanged handlers for each of the TextBoxes (by double clicking in the designer) and add one line to each:
panel1.Invalidate();
Now whenever the system needs to, your house will be drawn in the new position.
[edit]I really should check code before I post it: TryParse uses out parameters...
Sorry![/edit]
[edit#2]It works much nicer if you invalidate the panel rather than the whole form: I should run code before posting it too...[/edit#2]
Did you know:
That by counting the rings on a tree trunk, you can tell how many other trees it has slept with.
modified on Sunday, July 11, 2010 3:34 AM
|
|
|
|
|
Alright thanks for the feedback!
|
|
|
|
|
You're welcome!
Did you know:
That by counting the rings on a tree trunk, you can tell how many other trees it has slept with.
|
|
|
|
|
Don't remove your messages when you have an answer - it means that the chain of messages looks silly with nothing to refer to.
Leave your questions there, someone else may learn from your experiences.
You can edit your original question though, and change the heading to add "[Solved]" instead.
Did you know:
That by counting the rings on a tree trunk, you can tell how many other trees it has slept with.
|
|
|
|
|
don't remove messages that have replies attached. It is against the forum guidelines and results in sloppy threads.
|
|
|
|
|
I've no idea where you're going with this, but it's clearly a part of something bigger. That screen's way too small to move the house around much.
If you want to redraw the house at different locations you'll need to define a point on your house to be an anchor, with coordinates on the screen that correspond to the X and Y values entered by the user. All other drawing coordinates will have to be modified to make them relative to the anchor point.
You can do this by adding X to every x-value and Y to every y-value in all of your drawing methods, but this may need some tweaking. The default 0,0 coordinates for all methods is the upper left corner of the container; if you have an element within an element, it may take further work to get it just right. I'm fairly new to graphics programming, so I'm just beginning to pick up on some of the gotchas - you'll probably find more. Good luck!
"A Journey of a Thousand Rest Stops Begins with a Single Movement"
|
|
|
|
|
I suggest you look at this[^] little article; it explains the basics of drawing and animation.
|
|
|
|
|
hii!
please guide me regarding:
i want concatenate "welcome", "to", "hello" and "world" together.
like as: welcome to hello world
these value are coming from via for loop.
but if in case I don't know what the actually data store in database. what i do
thanx
thanx for every one:
modified on Saturday, July 10, 2010 8:17 AM
|
|
|
|
|
Console.WriteLine("helloworld");
|
|
|
|
|
Try:
string result = "welcome" + "to" + "hello" + "world";
string resultWithSpaces = string.Format("{0} {1} {2} {3}", "welcome", "to", "hello", "world");
Each literal string "whatever" could be a variable string ion either case:
string strWelcome = "welcome";
string strTo = "to";
string strHello = "hello";
string strWorld = "world";
string result = strWelcome + strTo + strHello + strWorld;
string resultWithSpaces = string.Format("{0} {1} {2} {3}", strWelcome, strTo, strHello, strWorld);
If you need them in a loop:
string[] text = {"welcome", "to", "hello", "world"};
string result = "";
string resultWithSpaces = "";
foreach (string s in text)
{
result += s;
resultWithSpaces += s + " ";
} The advanced stuff is to use a StringBuilder, but that can wait until you are certain of the basics!
Did you know:
That by counting the rings on a tree trunk, you can tell how many other trees it has slept with.
|
|
|
|
|
Sorry, didn't see your post!
DaveIf this helped, please vote & accept answer!
Binging is like googling, it just feels dirtier.
Please take your VB.NET out of our nice case sensitive forum.(Pete O'Hanlon)
BTW, in software, hope and pray is not a viable strategy. (Luc Pattyn)
|
|
|
|
|
I do that as well...
(mostly, I tend to do it with the CCC - damnit!)
Did you know:
That by counting the rings on a tree trunk, you can tell how many other trees it has slept with.
|
|
|
|
|
Three easy options, +, string.Format or StringBuilder
The first two...
string newString = "welcome" + "to" + "hello" + "world";
string newString = string.Format("{0} {1} {2} {3}", "welcome", "to", "hello", "world");
DaveIf this helped, please vote & accept answer!
Binging is like googling, it just feels dirtier.
Please take your VB.NET out of our nice case sensitive forum.(Pete O'Hanlon)
BTW, in software, hope and pray is not a viable strategy. (Luc Pattyn)
|
|
|
|
|
Look into System.Text.StringBuilder.
|
|
|
|
|
I do assume you know how to concatenate two strings and if you don't you should get a C# book and go through it.
If you are not sure what order they words are coming from the database in, I'm afraid you cannot do a 'grammatically correct' concatenation unless you build your own language parser. That would mean writing tons of parsing logic and building your own language database.
The funniest thing about this particular signature is that by the time you realise it doesn't say anything it's too late to stop reading it.
|
|
|
|
|
Hi,
I want to display Icon/Image as well as text in some particular cell in datagridview.
Is is possible??
How to merge 2 columns in dagagridview in C# application?
One column is DataGridViewImageColumn (Design Time)
Second column is DataGridViewTextBoxColumn (Design Time)
Thanking You,
Sunil G.
modified on Saturday, July 10, 2010 3:04 AM
|
|
|
|
|
You need to set the column's image propery as shown here.
The funniest thing about this particular signature is that by the time you realise it doesn't say anything it's too late to stop reading it.
|
|
|
|
|
Given example adds new column at run time.
I have added one column to insert an image at design time.
Thanking You,
Sunil G.
|
|
|
|
|