|
Override the ProcessCmdKey method of your form, watch for an arrow press, update some angle variable in your form, repaint the rectangle with the new angle variable.
Next time try to write your post in clearer English, the following words are misspelled: Wil, whoeva, shud, wid, 2. Such poor spelling discourages anyone from replying seeing as how it makes you appear less intelligent.
|
|
|
|
|
Thank you for your help.
I shall try this also(By the way isn't ProcessCmdKey used in C++?). Meanwhile the program's style has been changed.
And my spellings are not poor. I am the champion of spellings in my university and I always have been throughout my studies. You can say I was taking liberty of net abbreviations, which everyone understands nowadays.
The program structure has now become as in to make 4 separate lines to draw the rectangle, and change its position using button-click.
I have already made the program, but it has one problem: I don't know how to call the DrawLine function in Button1_Click event. It gives me the following errors:
-first that I "No overload for method 'DrawLinePoint' takes '0' arguments" (like 'DrawLine()' ) .
-when I give arguments of p,Pt1, Pt2 it says they're classes and I should enter variables.
-When I give it the arguments Pen, Point, Point(And it is to check only) it says that "No overload for method 'DrawLinePoint' takes '3' arguments"!
-And I have a point to make here:-
**If I give it three arguments, shouldn't I write it 4 times? To make 4 lines I have to call it four times right?
Like this:
e.Graphics.DrawLine(blackPen,pt1,pt2);
e.Graphics.DrawLine(blackPen,pt2,pt4);
e.Graphics.DrawLine(blackPen,pt4,pt3);
e.Graphics.DrawLine(blackPen,pt3,pt1);
where blackPen is the name of the Pen, and pt1,2,3,4 are points.
I have defined all points. I have converted them into integers. And I don't know what else I have done. It was giving me 40 errors, after which it is now giving none, but it does as soon as I try to call DrawLine in Button_Click event.
I have used the Transform function also. It has no problems.
But obviously, it will only WORK if I call the DrawLine function first. Wish I could attach my file here.
I have also tried making a separate class, but I wouldn't call it a serious step.
I hope this time you'll not be able to find a flaw in my spellings.
All guidance in Graphics in Visual C#.Net is Welcome with advanced thanks.
Wajeeha
|
|
|
|
|
You culd alwys try the Matrix clss.... sorry, only messing about with the spelling.
Try the Matrix class. Create an instance of it, call the Rotate() method passing the new angle, then pass the matrix instance to the graphics object's Transform property, then call the graphics object's Draw routines as if you were drawing as normal. The Matrix class should convert your calls to DrawRectangle. Simply change the angle everytime the keyboard is pressed, then redraw.
For example
<br />
Graphics g = e.Graphics;<br />
Matrix matrix = new Matrix();<br />
matrix.Rotate( 45 );<br />
g.Transform = matrix;<br />
g.DrawRectangle( Pens.Black, x, y, width, height );<br />
By the way I've not tried this just yet, but I know it works when drawing lines.
Andy
|
|
|
|
|
Thank you for your help. I am using the Transform function, WITH the matrices made manually. I have done almost exactly as you've clued above.(By the way, how do we change the colors of text around here?)
Meanwhile the program's style has been changed.
I was taking liberty of net abbreviations, which everyone understands nowadays. And I did not know it's not liked here.
The program structure has now become as in to make 4 separate lines to draw the rectangle, and change its position using button-click.
I have already made the program, but it has one problem: I don't know how to call the DrawLine function in Button1_Click event. It gives me the following errors:
-first that I "No overload for method 'DrawLinePoint' takes '0' arguments" (like 'DrawLine()' ) .
-when I give arguments of p,Pt1, Pt2 it says they're classes and I should enter variables.
-When I give it the arguments Pen, Point, Point(And it is to check only) it says that "No overload for method 'DrawLinePoint' takes '3' arguments"!
-And I have a point to make here:-
**If I give it three arguments, shouldn't I write it 4 times? To make 4 lines I have to call it four times right?
Like this:
e.Graphics.DrawLine(blackPen,pt1,pt2);
e.Graphics.DrawLine(blackPen,pt2,pt4);
e.Graphics.DrawLine(blackPen,pt4,pt3);
e.Graphics.DrawLine(blackPen,pt3,pt1);
where blackPen is the name of the Pen, and pt1,2,3,4 are points.
I have defined all points. I have converted them into integers. And I don't know what else I have done. It was giving me 40 errors, after which it is now giving none, but it does as soon as I try to call DrawLine in Button1_Click event.
I have used the Transform function also. It has no problems.
But obviously, it will only WORK if I call the DrawLine function first. Wish I could attach my file here.
I have also tried making a separate class, but I wouldn't call it a serious step.
Help! I need a 3-D game programmer who can help me in my final year project!
Wajeeha
|
|
|
|
|
Wajeeha,
My following answer assumes you're drawing to a form.
Basically you want to perform your drawing within the Form's Paint event or override the Form's OnPaint method? not to draw directly to the form when a button is pressed. The Paint event will receive the PaintEventArgs referenced by 'e'. It's by using e.Graphics you will perform the necessary drawing. Based on your original request of altering the angle/rotation or a box when the user presses a button, I would have done something like this (although very basic)
<br />
int _x = 10;<br />
int _y = 10;<br />
int _width = 100;<br />
int _height = 100;<br />
int _angle = 45;<br />
...<br />
...<br />
...<br />
private void buttonclicked( object sender System.EventArgs e )<br />
{<br />
_angle = ( _angle == 360 ) ? 0 ? _angle + 1;<br />
this.Refresh();<br />
}<br />
<br />
<br />
private void FormPaint( object sender, PaintEventArgs e )<br />
{<br />
Graphics g = e.Graphics;<br />
Matrix matrix = new Matrix();<br />
matrix.Rotate( _angle );<br />
g.Transform = matrix;<br />
g.DrawRectangle( Pens.Black, _x, _y, _width, _height );<br />
}<br />
Everytime the button is pressed, we update the rotation angle and force a redraw of the box.
Regards,
Andy
|
|
|
|
|
Hi All,
I have a DataTable in a Windows Forms project that I would like to use a
Select statement. The problem is, I'd like to be able to do wildcard
searches (including single character searches). The DataTable only
supports multiple-character searches (*), and only at the beginning or end
of the search criteria.
What are my alternatives? I'd rather not have to go back to the database,
unless that is the best way. The DataTable was a performance enhancement.
Thanks,
pagates
|
|
|
|
|
I encounted a similar problem. It's quite frustrating that searching in a datatable isn't more flexible. I found a partial solution by parsing the search string to replace wildcards in the middle of the search string like this:
private string ParseWildCards(string strWild)
{
Regex reg = new Regex(@"(?<=.)\*(?=.)");
if (reg.IsMatch(strWild))
{
int i = strWild.IndexOf("LIKE");
if (i > 0)
{
string col = strWild.Substring(0,i).Trim();
string strReplace = "*' AND " + col + " LIKE '*";
return reg.Replace(strWild,strReplace);
}
}
return strWild;
}
This will replace a string like "col like 'aaa*bbb'" with "col like 'aaa*' and col like *bbb' which kind of works except that there is no way to stop it matching a string like '...bbbaaa...' because you can't specify that it should match the 'aaa*' part before the '*bbb' part.
If anybody has a better solution I would love to hear about it.
|
|
|
|
|
Thanks for the reply. I will combine this with an answer I saw in the MSDN newsgroups.
Basically, the MSDN answer was to manually go through the rows and doing a RegEx pattern search. While that could be slow with tens of thousands of rows, if I implement your solution first, I will at least have some rows filtered out.
Again, if anybody has a better idea, I'm all ears.
Thanks again,
PAGates
|
|
|
|
|
I have attempted to write a programme,when the Server thread received a packet,it can notify the mainFrame to display it,i used a event,the Server touch off it and the mainFrame capture it,and modifty the listview,but this bring on a excepition says it can not modify the listview in the thread not creat it?i do not known how to resolve it.
Sorry,i really can not speak real English!!!
|
|
|
|
|
You have to use Control.Invoke or Control.BeginInvoke instead of directly modifying the ListView on your mainFrame.
Regards,
mav
--
Black holes are the places where god divided by 0...
|
|
|
|
|
Hi all,
I need to create arrays of object dynamically.
for example
class Pesron;
Person[] p=new Person[10];
it creates 10 objects ob type person.
I don't know the exact number of objects. i have to specify it in run time
Thanks n Regards,
Ramya.R
|
|
|
|
|
|
Hello Ramya,
Do you know link list data structure. It will allow you to insert any number of object.
Divyang Mithaiwala
System Engineer & Software Developer
|
|
|
|
|
Can i use the link list concept in C#.It needs pointer to denote address..
Thanks n Regards,
Ramya.R
|
|
|
|
|
Do you know that when u declare any object it will just declare reference not allocate memory for that.
Now you can use this concept for link list.
Divyang Mithaiwala
System Engineer & Software Developer
|
|
|
|
|
yeah! I know that concept.
I'll try to implement that.
Thanks a Lot Divyang Mithaiwala!!!!
Thanks n Regards,
Ramya.R
|
|
|
|
|
Person[] p = new Person[n]
Where n is a varible with the number that you need.
Alternatively if it's the case that even at runtime you don't know how many you will need then use the ArrayList class.
|
|
|
|
|
A few others have replied here saying to use ArrayList. That is fine. If you're using .NET 2.0, you can use the System.Collections.Generic.List object to store your Person objects in a strongly-typed fashion (which ArrayList will not do). For example:
using System.Collections.Generic;
...
List< Person > persons = new List< Person >();
persons.Add(somePerson);
persons.Add(5);
-- modified at 10:39 Wednesday 8th March, 2006
|
|
|
|
|
Thanks Judah Himango ..
Your coding was very useful to me.
Thanks a lot
Thanks n Regards,
Ramya.R
|
|
|
|
|
hi
like console applications is run in the cmd prompt how i can run the classlibrary in the cmd prompt .Does any one know the command for it .
sasi
|
|
|
|
|
You can't, a class library is just that, a library, which contains lots of methods/classes but no interaction.
Either build yourself a simple console application to access and test the classes.
Or use something like NUnit to test your library.
|
|
|
|
|
Hello all,
I create one struct now i have to send this data to socket method SentTo . But SendTo method require byte[].
Now how can i convert struct type to byte[].
Thanx in advance.
Divyang Mithaiwala
System Engineer & Software Developer
|
|
|
|
|
You will have to write a custom method that does it. We may help you achieving this, if you post the code for your struct.
Also, do you have control of both communication endpoints?
--------
"I say no to drugs, but they don't listen."
- Marilyn Manson
|
|
|
|
|
Hello Michel,
Check your mail. or click here[^].
Thanx for responcing.
Divyang Mithaiwala
System Engineer & Software Developer
|
|
|
|
|
Huh?
--------
"I say no to drugs, but they don't listen."
- Marilyn Manson
|
|
|
|
|