AutoCAD C#

[AutoCAD C#]AutoCAD Palette 배경색상 설정

데브프로그라 2024. 11. 9. 21:10
반응형

AutoCAD의 특성 팔레트와 같은 배경색의 팔레트를 C#으로 구현하려면, AutoCAD의 특성 팔레트와 동일한 색상을 가져와서 PaletteSet에 적용해야 합니다. AutoCAD는 내부적으로 특정 색상 테마를 사용하기 때문에, 특성 팔레트의 배경색을 직접 가져오는 API는 제공되지 않지만, AutoCAD의 다크 및 라이트 테마에 따라 팔레트 배경색을 설정할 수 있습니다.

다음은 AutoCAD 테마에 맞게 팔레트 배경 색상을 설정하는 예제 코드입니다.
using System;
using System.Drawing;
using Systehttp://m.Windows.Forms;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.Windows;

[assembly: CommandClass(typeof(AutoCADPaletteExample.PaletteCommands))]

namespace AutoCADPaletteExample
{
    public class PaletteCommands
    {
        private PaletteSet _paletteSet;

        [CommandMethod("ShowPaletteWithTheme")]
        public void ShowPaletteWithTheme()
        {
            if (_paletteSet == null)
            {
                // PaletteSet 생성
                _paletteSet = new PaletteSet("My Themed Palette")
                {
                    Style = PaletteSetStyles.ShowPropertiesMenu |
                            PaletteSetStyles.ShowCloseButton
                };

                // 사용자 컨트롤 생성
                var userControl = new UserControl();
                
                // AutoCAD 테마에 맞는 배경색 설정
                Color backgroundColor = GetAutoCADThemeBackgroundColor();
                userControl.BackColor = backgroundColor;

                // Label 추가
                var label = new Label
                {
                    Text = "AutoCAD 테마와 동일한 배경색을 가진 팔레트입니다.",
                    Dock = DockStyle.Fill,
                    TextAlign = ContentAlignment.MiddleCenter,
                    BackColor = backgroundColor
                };
                userControl.Controls.Add(label);

                // 팔레트에 사용자 컨트롤 추가
                _paletteSet.Add("My Themed Palette Page", userControl);
            }

            // 팔레트 표시
            _paletteSet.Visible = true;
        }

        private Color GetAutoCADThemeBackgroundColor()
        {
            // AutoCAD의 현재 테마를 확인하여 색상을 설정
            bool isDarkTheme = Autodesk.AutoCAD.ApplicationServices.Application.GetSystemVariable("COLORTHEME").ToString() == "1";
            return isDarkTheme ? Color.FromArgb(51, 51, 51) : Color.FromArgb(238, 238, 238); // 다크 테마: 어두운 회색, 라이트 테마: 밝은 회색
        }
    }
}

1. AutoCAD 테마 확인: COLORTHEME 시스템 변수를 사용해 현재 AutoCAD의 테마가 다크인지 라이트인지 확인합니다. 다크 테마일 경우 값이 1이고, 라이트 테마일 경우 0입니다.

2. 테마에 맞는 색상 설정: GetAutoCADThemeBackgroundColor 메서드를 통해 다크 테마일 경우 다크 회색 (#333333), 라이트 테마일 경우 밝은 회색 (#EEEEEE)으로 배경 색상을 설정합니다.

3. 사용자 컨트롤에 색상 적용: UserControl의 BackColor에 테마에 맞는 배경색을 적용하여 특성 팔레트와 비슷한 느낌의 팔레트를 생성합니다.

위 코드를 사용하면 AutoCAD의 특성 팔레트와 유사한 배경색을 가진 커스텀 팔레트를 만들 수 있습니다.

 

반응형

/* 코드복사 버튼 */ pre { position: relative; overflow: visible; } pre .copy-button { opacity: 0; position: absolute; right: 8px; top: 4px; padding: 6px 18px; color: rgb(255, 255, 255); background: rgba(255, 223, 0, 0.6); border-radius: 5px; transition: opacity .3s ease-in-out; } pre:hover .copy-button { opacity: 1; } pre .copy-button:hover { color: #eee; transition: all ease-in-out 0.3s; } pre .copy-button:active { color: #33f; transition: all ease-in-out 0.1s; } .copy-message:before { content: attr(copy-message); position: absolute; left: -95px; top: 0px; padding: 6px 18px; color: #fff; background: rgba(255, 223, 0, 0.6); border-radius: 5px; } /* 코드복사 버튼 END */