|
You could mask the button using the PaintEventArgs.Graphics property and using the Graphics.Clip property to set a Region that will clip the actual image. There is several classes in the System.Drawing and child namespaces that can help create the Region for that image (which you should cache until the image changes). This ensures that the rest of the button is not visible at all - just the image. This is the technique that many application use, though many today that target Windows 2000 and newer use layered windows (which the transparency does), but that only works on Windows 2000 and newer.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Drawing Vertical Text.
The article below is taken from the .NET Framework SDK Documentation
[C#]
string text = "Vertical text";
FontFamily fontFamily = new FontFamily("Lucida Console");
Font font = new Font(fontFamily, 14, FontStyle.Regular, GraphicsUnit.Point);
PointF pointF = new PointF(40, 10);
StringFormat stringFormat = new StringFormat();
SolidBrush solidBrush = new SolidBrush(Color.FromArgb(255, 0, 0, 255));
stringFormat.FormatFlags = StringFormatFlags.DirectionVertical;
e.Graphics.DrawString(text, font, solidBrush, pointF, stringFormat);
The attached illustration shows the vertical text, with the word "Vertical" at the top, ant the word "text" below.
How does one code to have the words appesr in the reverse direction, "Vertical" at the bottom, "test" at th top.
Regards,
Fred.
Fred S. Parker
Email: fred@fsparker.com.au
|
|
|
|
|
You need to apply a transform or two to your Graphics object. You could use Graphics.RotateTransform to rotate your text, but you'll need to also use Graphics.TranslateTransform to translate the coordinates since the text is rotated on an axis (the beginning of the string). Unfortunately, I'm not too good with matrices when it comes to graphics, but those are the two methods you should look into in the .NET Framework SDK.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
You can use ScaleTransform to do horizontal or vertical flip.
To draw vertical text going the other way (vertically) do:
g.TranslateTransform(0, y*2+height)
g.ScaleTransform(1, -1)
you need the translate because scale will flip your text to negative values, so you're moving it by y*2 (one y would move it to 0), plus height of the object. y is the y coordinate of the text and height is the height. If you don't know the height, you'd have to use MesageString method.
If you have any other drawing code after the text, you have to either reset the transoformation or best way is to remember it and then set it back:
Matrix saveM = g.Transform;
g.TranslateTransform(0, y*2+height)
g.ScaleTransform(1, -1)
g.DrawString(...)
g.Transform = saveM;
If you use rotate, then your text will be flipped in both y and x, and depending on your needs you might want it or not.
|
|
|
|
|
Is there something like a MessageBox, that don't have MessageBoxButtons but is showing for 3-4 sec. before it closes
Thanks
Thomas
|
|
|
|
|
No.
You can probably customize a form to behave like that, though
"if you vote me down, I shall become more powerful than you can possibly imagine" - Michael P. Butler.
|
|
|
|
|
You might look around and see if anyone
has done a C# SplashScreen Control.
I'm new to C# but in Delphi the usual
scheme for a roll-your-own splash
screen is just to dynamically create
a Panel with a bunch of labels to
display your text.
Then use a timer to destroy it after
so many seconds.
|
|
|
|
|
Do you know what is faster? Use CodeCompiler.CompileAssemblyFromDom or CompileAssemblyFromCode ?
Thanx
Wizard_01
|
|
|
|
|
I don't have a specific answer, but...
The DOM doesn't support all the different syntax constructs (there are some interesting blog entries about this if you search Google), and setting up the DOM is a royal PITA--if you have source code, why set up all the DOM classes? In fact, I've found it easier to generate source code than work with the DOM. So, I think you have to take into account the overall performance issue.
Marc
Microsoft MVP, Visual C#
MyXaml
MyXaml Blog
|
|
|
|
|
I am making a custom Textbox control. What I did is I put a windows textbox under a usercontrol, so may base class is windows usercontrol. What I want is the event and properties of windows textbox which is under the usercontrol to show up as my base properties and events because what is happening is when I use my custom control the usercontrol properties and events are showing up so i cant access the event of my textbox and set properties on it. And is it also possible to hide the events and properties of usercontrol and instead the properties and event of textbox will show up when using this custom control?
Thank you very much.
|
|
|
|
|
Why do you want to put this into an UserControl?
It would be much easier to simply extend the TextBox class.
|
|
|
|
|
I did this because I like to create a custom control that is all-in-one, meaning I will be adding my custom dropdown box, add a date dropdown, add some buttons to it and anything that I can think of. My problem is if I compile my control then use it on VB.NET environment I can't access the event of my textbox becuase all event that is showing are usercontrol event(unless I make my own custom event which render the usercontrol event useless but still showing in my control's event). So what I want is when I run my VB project using my custom control then I press a key on my custom control what I want is the keypress event of the control to fire up. So is there any way to expose the events of the textbox instead of the event of the user control without making custom event just to send all the events of the textbox to the user? And is there anyway to hide some events in the usercontrol?
Thanks.
|
|
|
|
|
Yeah, I thought you do something like this. Just wanted to be sure
To expose events of your TextBox without making custom events, you could subscribe your Control to the TextBox events and inside the event handler raise the appropiate event of your Control. If you want to expose some specific TextBox events you will have to declare custom events.
<br />
class Custom : UserControl<br />
{<br />
TextBox textBox1;<br />
<br />
public Custom()<br />
{<br />
textBox1 = new TextBox();<br />
textBox.TextChanged += new System.EventHandler(Custom_TextChanged);<br />
}<br />
<br />
void Custom_TextChanged(object sender, System.EventArgs e)<br />
{<br />
this.OnTextChanged(EventArgs.Empty);<br />
}<br />
}<br />
To hide some events of your UserControl you have the redeclare them with a stricter access modifier like private or protected.
<br />
private new event System.EventHandler SizeChanged;<br />
Hope this helps!
|
|
|
|
|
Thanks Stefan you've been a great help. Now I can continue coding my controls.
|
|
|
|
|
My pleasure!
|
|
|
|
|
Stefan has a point, but if you're building a composite control, then you either need to add events to the UserControl , which would handle the events of the TextBox . The handlers for the various TextBox events fire the events on the UserControl (either overriding existing events like TextChanged or making new events like TextBoxTextchanged ).
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Hi all,
How to use a textbox control along with a calender control in asp.net codebehind is C#.
onclick of the calender's particular date the day/month/year should be put in the 3 textbox respectively?.
How to code for this. On server side or client side.
because i want that dates comparison also.
thanks in advance
|
|
|
|
|
hi,
Let me first clarify what I have understood from your requirement...
You have a calender control on the web page and 3 textboxes.
When the user selects a date the day month and year component should get displayed in the 3 text boxes...
If this is so... then herez the code...
private void CalMain_SelectionChanged(object sender, System.EventArgs e)
{
DateTime selDate = ((Calendar)sender).SelectedDate;
txt1.Text = selDate.Day.ToString();
txt2.Text = selDate.Month.ToString();
txt3.Text = selDate.Year.ToString();
}
Note : This code is server side.
regards,
Aryadip.
Cheers !! and have a Funky day !!
|
|
|
|
|
Hello Aryadip
Thanks! that code is working & comparitively it's so simple.
|
|
|
|
|
Hello, could anyone share info on how to reduce the memory usage of a .NET windows application. I noticed that my application that was written in C# consumes 10 mb of page files which I think it is kind a bloaty.
Any areas which need to be targeted for optimization for .NET application?
thank you.
Sonork 100.41263:Anthony_Yio
Life is about experiencing ...
|
|
|
|
|
I'm not sure if you've already done this, but there's an option to "Optomize code" in C# Apps. You can find it in Project Properties -> Build Options
"if you vote me down, I shall become more powerful than you can possibly imagine" - Michael P. Butler.
|
|
|
|
|
yes, it has been done cause I am building it in release mode.
Sonork 100.41263:Anthony_Yio
Life is about experiencing ...
|
|
|
|
|
Then sorry...can't really help you.
"if you vote me down, I shall become more powerful than you can possibly imagine" - Michael P. Butler.
|
|
|
|
|
It is okay. thanks.
I notice that you are from Malaysia too. Which part of Malaysia are you in?
Sonork 100.41263:Anthony_Yio
Life is about experiencing ...
|
|
|
|
|
KL, you?
Did you update your bio. I've seen your bio before, but it said you were from the states.
"if you vote me down, I shall become more powerful than you can possibly imagine" - Michael P. Butler.
|
|
|
|