Notifications
Clear all

[Closed] Colored Buttons

Is there a way to color the buttons in a rollout? I’ve tried creating an imgTag the same width and height as the button, giving it a solid color bitmap, setting the opacity to .5 and moving into position over the button, but that doesn’t seem to work. And I know that I can create an image to use for the button, but I want to the text display and just color the background.

Is there any way to do this?

5 Replies

Hey James,

I use a ‘checkbutton’ for this.
They have a color property and then just always keep the button pressed.

myCheckbutton changed state do
(
mycheckbutton.state = true
– rest of your code goes here
)

Take care,

Or use a dotnet button (System.Windows.Forms.Button) and set its .BackColor property.

Martijn

How do I convert a maxScript color value ( [255,255,255] ) to System.Drawing.Color?

1 Reply
(@bobo)
Joined: 11 months ago

Posts: 0

See the bottom of the topic “Creating A Simple DotNet MonthCalendar And Changing Its Colors”. The FromArgb() method exposed by System.Drawing.Color can convert (A)RGB values to DotNet colors. Just pass the R, G and B of the MAXScript color as arguments. Note that other than in ActiveX, the colors are in the correct RGB order and not BGR.

Alternatively, you can constuct a DotNetClass and call the method in it:

yourDotNetButton.backcolor = (DotNetClass “System.Drawing.Color”).fromARGB 100 100 200

hi James,

just to add to Bobo’s post, you can also use nice button properties like text positioning, mouse overlay colors, transparent images by specifiying a few more classes. The image in this case has a white background but you will have to let them point to a different bitmap for the code to run.

rollout DotNetTest ".Net UI on MXS Form"
 (
 	
 	dotnetcontrol mbutton "System.Windows.Forms.Button" height:60 width:80 pos:[5,5]
 	dotnetcontrol mbutton2 "System.Windows.Forms.Button" height:60 width:80 pos:[88,5]
 		
 	on dotnettest open do
 	(
 	mcolor = dotnetclass "System.drawing.color" 
 	malign = dotnetclass "System.Drawing.ContentAlignment"
 		
 	maxBackColor = colorMan.getColor #background
 	DotNetBackColor = mColor.FromArgb (maxBackColor[1] * 255.0f) (maxBackColor[2] * 255.0f) (maxBackColor[3] * 255.0f)
 
 	imageclass = dotNetclass "System.Drawing.image"		
 	-- load bitmaps 
 	IListimage1 = imageclass.fromfile (LRUIdir+"zfstart.bmp")
 	IListimage2 = imageclass.fromfile (LRUIdir+"zfstop.bmp")
 	--create an imagelist
 	imglist = dotnetobject "System.Windows.Forms.ImageList"
 	imglist.imagesize =  dotnetobject "System.Drawing.Size" 64 35
 	--add them to the image list
 	imglist.images.add ilistimage1
 	imglist.images.add ilistimage2
 	imglist.TransparentColor = mcolor.white			
 		
 	mbutton.text = "Add Start"
 	mbutton.flatstyle = dotnetobject "System.Windows.Forms.FlatStyle" Flat
 	mButton.TextAlign = malign.BottomCenter
 	mbutton.imagealign = malign.topcenter
 	mbutton.FlatAppearance.MouseOverBackColor = mcolor.limegreen
 	mbutton.backcolor = DotNetBackColor
 	
 	mButton2.text = "Add Stop"
 	mbutton2.flatstyle = dotnetobject "System.Windows.Forms.FlatStyle" Flat
 	mbutton2.imagealign = malign.topcenter
 	mButton2.TextAlign = malign.bottomCenter
 	mbutton2.FlatAppearance.MouseOverBackColor = mcolor.coral
 	mbutton2.backcolor = DotNetBackColor
 		
 	mbutton.ImageIndex = 0
 	mbutton.ImageList = ImgList
 	mbutton2.imageindex = 1
 	mbutton2.ImageList = ImgList
 	)
 	
 	on mbutton click do 
 	(
 	print "start pressed"
 	)
 	
 	on mbutton2 click do 
 	(
 	print "stop pressed"
 	)
 
 )
 createdialog dotnettest 175 80 style:#(#style_toolwindow, #style_sysmenu)