|
I have in window a graphic. In the same window i have a pictureBox. How can i determin if the pictureBox is on top of the graphic. Is there a method whick determines if a point is inside of an area?
Good gives us the power of creating the future. Use this power with reason.
|
|
|
|
|
Read up on the following methods:
Rectangle.Contains
Rectangle.IntersectsWith
GraphicsPath.IsVisible
I trust one of them will be what you need.
|
|
|
|
|
what happens if the area is irregulate? if the area is a polygon?
Good gives us the power of creating the future. Use this power with reason.
|
|
|
|
|
if you can explain it, then you can program it to draw, to fill, to determine in/out etc.
read up on the keywords I gave you.
|
|
|
|
|
I've implemented a "Color Selector" made by:
4 classes:
Solid
Linear
Path
Texture
each class have a method which return a new brush of type related(LinearGradientBrush for "linear" etc.)
all that 4 are selectable from a "Master" Property:
public class MyClass : UserControl
{
public static Solid SolidFill = new Solid();
public static LinearGradient LinearGradientFill = new LinearGradient();
public static PathGradient PathGradientFill = new PathGradient();
public static Texture TextureFill = new Texture();
public static int TypeIndex = 1;
public object Fill = new object();
[Category("Color")]
[DisplayName("Fill Type")]
[TypeConverter(typeof(MyTypeConverter))]
public object FillType
{
get { return Fill; }
set { Fill = value; this.Invalidate(); }
}
protected override void OnPaint(PaintEventArgs e)
{
Graphics ShapeGraphicsObject = e.Graphics;
GraphicsPath ShapeGraphicsPath = new GraphicsPath();
Pen BorderPen = new Pen(BorderColor, BorderThikness);
Brush GlobalizedBrush = SolidFill.SolidMethod();
ShapeGraphicsPath.AddRectangle(ShapeGraphicsObject.VisibleClipBounds.X, ShapeGraphicsObject.VisibleClipBounds.Y, ShapeGraphicsObject.VisibleClipBounds.Width, ShapeGraphicsObject.VisibleClipBounds.Height);
switch (TypeIndex)
{
case 1:
GlobalizedBrush = SolidFill.SolidMethod();
break;
case 2:
GlobalizedBrush = LinearGradientFill.LinearGradientMethod(LinearRectangle);
break;
case 3:
GlobalizedBrush = PathGradientFill.PathGradientMethod(ShapeGraphicsPath);
break;
case 4:
GlobalizedBrush = TextureFill.TextureMethod();
break;
}
ShapeGraphicsObject.FillPath(GlobalizedBrush, ShapeGraphicsPath);
ShapeGraphicsObject.DrawPath(BorderPen, ShapeGraphicsPath);
}
}
In "MyTypeConverter" I found some different ways for having a Dropdown with String Names for 4 types,so I'm able to select from Property Grid
the "type" which "FillType" object will be after "desired string name selected" from dropdown.
So,this works perfect at design time,but when I press "F5" my control is not coloured as in design time.
If I change property in
public Solid = new Solid ();
[Category("Color")]
[DisplayName("Fill Type")]
[TypeConverter(typeof(MyTypeConverter))]
public Solid FillType
{
get { return Fill; }
set { Fill = value; this.Invalidate(); }
}
it works perfect at Runtime and DesignTime
but it display in propertygrid ONLY "Solid" type properties.
I don't know what I should Change in MyTypeConverter implementation.
I try to describe "PropertyGrid" Graphically when Is Selected "Solid" string(It identify "mynamespace.Solid"type in MyTypeConverter)
ExpandableObjectConverter Dropdown Values from "MyTypeConverter"
+ FillType Solid (but when I load control "Default Value" is "System.Object" took from "FillType" Property Type");
SolidTypeProperty1 Linear
SolidTypeProperty2 Path
SolidTypeProperty etc. Texture
Or when is Selected "Linear"
ExpandableObjectConverter Dropdown Values from "MyTypeConverter"
+ FillType Linear
LinearTypeProperty1 Solid
LinearTypeProperty2 Path
LinearTypeProperty etc. Texture
I'm a newbie in handling TypeConverters,so I post the code for MyTypeConverter too:
public class ColorTypeConverter : ExpandableObjectConverter
{
private ArrayList Values = new ArrayList();
public ColorTypeConverter()
{
Values.Add(myNamespace.SolidFill);
Values.Add(myNamespace.LinearGradientFill);
Values.Add(myNamespace.PathGradientFill);
Values.Add(myNamespace.TextureFill);
}
public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
{
return true;
}
public override TypeConverter.StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
{
StandardValuesCollection Svc = new StandardValuesCollection(Values);
return Svc;
}
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
{
if (sourceType == typeof(string)) { return true; }
else return base.CanConvertFrom(context, sourceType);
}
public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
{
if (destinationType == typeof(string)) { return true; }
else return base.CanConvertTo(context, destinationType);
}
public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
{
if ((string)value == "Solid") {return myNamespace.SolidFill; }
if ((string)value == "Linear") { return myNamespace.LinearGradientFill; }
if ((string)value == "Path") { return myNamespace.PathGradientFill; }
if ((string)value == "Texture") { return myNamespace.TextureFill; }
else return base.ConvertFrom(context, culture, value);
}
public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
{
if (value.GetType() == typeof(Solid)) { myNamespace.TypeIndex = 1; return "Solid"; }
if (value.GetType() == typeof(LinearGradient)) { myNamespace.TypeIndex = 2; return "Linear"; }
if (value.GetType() == typeof(PathGradient)) { myNamespace.TypeIndex = 3; return "Path"; }
if (value.GetType() == typeof(Texture)) { myNamespace.TypeIndex = 4; return "Texture"; }
else return base.ConvertTo(context, culture, value, destinationType);
}
}
Any Suggestion for let work It at Runtime?
Optimizing Code?
Is useful to add Instances of 4 classes as it,or is better let 4 classes derive from "Component" and add all four as contained components in the
ctor of the "Coloured"UserControl?
Or Methods as "CreateInstance" from TypeConverter base class could be useful?
Please try to help me!
Thank You so much for patience and attention.
Frank Drebin
|
|
|
|
|
hi all hi evry body
i wount to chang the value for the key
i meaning if i setfocuse to textbox1 and press the key Enter The value of key applay is The Tap Key Then After i pree Enter change the Carsure to the next control to textbox2 as example
please give me code if you have
thanks for evry body help me
Thaer
|
|
|
|
|
Stick to one thread, such as the one you have down below. I am still looking at how you can mimic the tab key. You might want to look at getting the collection of controls into a ControlCollection and when you have Convert.ToInt16(e.KeyChar)==13 , you set focus on the next control...But again, please stick to one thread, it helps to keep communication in one place rather than scattering it all over the forums
Here is something that may work:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (Convert.ToInt16(e.KeyChar) == 13)
{
listBox1.Focus();
}
}
In this example, listBox1 is the next control in the order that I want to tab to. You will have to use the correct event handler in your case, and the correct control you wish to go to after enter has been hit.
"The clue train passed his station without stopping." - John Simmons / outlaw programmer
|
|
|
|
|
|
That is the drawback of the approach I gave you. Not sure if there is really any other way of doing this. Even if you could mimic the tab key with the enter keypress, you are still stuck with having an event handler for each textbox control. You could always have the other event procedures call the one that has the actual code it in. You have to pass the arguments to the one that has the code.
"The clue train passed his station without stopping." - John Simmons / outlaw programmer
|
|
|
|
|
Hi,
I guess generating TAB events is not the intended way.
Please have a look at Control.GetNextControl()
|
|
|
|
|
Luc Pattyn wrote: Control.GetNextControl()
There's always that route as well.
"The clue train passed his station without stopping." - John Simmons / outlaw programmer
|
|
|
|
|
I am trying to create a c# client that connects to a java server using ssl. I see that java has ssl as part of its baseline, but am not sure how to implement this using C#. Does anyone know of any examples that may point me in the right direction or software that implements ssl for c#?
Thanks,
allan
|
|
|
|
|
What exactly do you mean Java server? What is it serving? A database, website?
"The clue train passed his station without stopping." - John Simmons / outlaw programmer
|
|
|
|
|
The project is currently using regular sockets and is passing data between a c# client application to a server written in java. The system requires ssl to be used and I am looking to remove the regular socket layer with ssl. As you can tell from my posting, I am new to this and am trying to get pointed in the right direction by looking at some simple examples.
|
|
|
|
|
Not a 100% sure since I am not right there looking at the Java server, but my guess would be to know what the port is coming from the java server and have your C# client app listen/talk to the java server on that particular port. Look around CP for good sockets articles.
"The clue train passed his station without stopping." - John Simmons / outlaw programmer
|
|
|
|
|
hi all hi evry body
i wount to chang the value for the key
i meaning if i setfocuse to textbox1 and press the key Enter The value of key applay is The Tap Key Then After i pree Enter change the Carsure to the next control to textbox2 as example
thanks for evry body help me
Thaer
|
|
|
|
|
You have to use the KeyPressed event handler and change the keypress to what you want.
"The clue train passed his station without stopping." - John Simmons / outlaw programmer
|
|
|
|
|
|
You should be able to change e.KeyChar , Enter does, it is ascii 13...
"The clue train passed his station without stopping." - John Simmons / outlaw programmer
|
|
|
|
|
Does anyone know what is called when you click this button:
http://davidkean.net/images/helpwindow.jpg
I want to use that help button but don't want to turn max and min off on the title bar.
|
|
|
|
|
For some unknown reason they have chosen the highly illogical name HelpButton for that.
You have to turn the minimise and maximise buttons off for the help button to show up.
---
single minded; short sighted; long gone;
|
|
|
|
|
Yeah see what I want to do is us the help button without turning the min and max buttons off. So I want to link it to another button on my form, thus trying to figure out how it is called.
|
|
|
|
|
RussBus wrote: Yeah see what I want to do is us the help button without turning the min and max buttons off.
Yes, you said that in your first post, and I said that it's not possible.
RussBus wrote: So I want to link it to another button on my form, thus trying to figure out how it is called.
What do you plan to "link", and how do you plan to "link" it?
If you want a button on the title bar you have to place it there yourself. I don't know exactly how to do that, but I fear that you have to send windows messages to the window to create the button and handle the events.
---
single minded; short sighted; long gone;
|
|
|
|
|
I just want the button some where on my form, does not have to be in the title bar. So when you click on my help button I want the same thing to happen if you push the one in the title bar.
|
|
|
|
|
RussBus wrote: I just want the button some where on my form, does not have to be in the title bar.
Just make your own button with a question mark image then.
RussBus wrote: I want the same thing to happen if you push the one in the title bar.
Why even bother with that one when you have another help button on your form?
"The clue train passed his station without stopping." - John Simmons / outlaw programmer
|
|
|
|