コード例 #1
0
        public void ReadOptionsFromDialog()
        {
            try
            {
                // ColumnWidth = 110 - trackWidth.Value;
                MiniCodeColumnEnabled             = chkEnabled.Checked;       //AussieALF: Added so it saves the updated option
                WordDoubleClickEnabled            = chkWordHighlight.Checked; //AussieALF: Added so it saves the updated option
                ColumnBackgroundColor             = btnBackColor.BackColor;
                ColumnVisibleLinesColor           = btnVisibleRangeColor.BackColor;
                CodeColorNormalLine               = btnLineColor.BackColor;
                CodeColorCommentLine              = btnCommentColor.BackColor;
                ColumnBackgroundColorSelectedWord = btnColumnBackgroundColorSelectedWord.BackColor;
                CodeColorSelectedWord             = btnCodeColorSelectedWord.BackColor;

                CodeToolWindow.DisposeGraphicElements();
                panelSample.Refresh();
            }
            catch
            {
            }
        }
コード例 #2
0
        private void panelSample_Paint(object sender, PaintEventArgs e)
        {
            CodeToolWindow.CreateGraphicElements();
            Graphics graphics = e.Graphics;

            Rectangle rect = new Rectangle(0, sampleHeader.Height, panelSample.Width, panelSample.Height - sampleHeader.Height);

            //SmoothingMode oldMode = graphics.SmoothingMode;
            try
            {
                // alle Zeilen holen
                List <Line> items = Line.SampleLines;

                graphics.FillRectangle(CodeToolWindow.ColumnBackgroundBrushCodeColumn, rect);


                int width_divisor = 2;
                // falls die Höhe nicht reicht, Teiler ermitteln
                int height_divisor = 1;

                // den sichtbaren Bereich markieren
                Rectangle visible_rect = new Rectangle(
                    rect.X, rect.Y + (6 / height_divisor),
                    panelSample.Width, (26 - 6) / height_divisor);
                graphics.FillRectangle(CodeToolWindow.ColumnBrushVisibleLines, visible_rect);


                int left  = rect.X;
                int start = 0;
                int end   = 0;
                for (int l = 0; l < items.Count; l++)
                {
                    Line line = items[l];

                    int y = l / height_divisor + rect.Y;
                    start = line.Start / width_divisor;
                    if (start > panelSample.Width)
                    {
                        start = panelSample.Width - 6;
                    }
                    end = line.End / width_divisor;
                    if (end > panelSample.Width)
                    {
                        end = panelSample.Width;
                    }

                    int start_of_comment = line.StartOfComment;
                    int end_of_comment   = -2;
                    if (start_of_comment >= 0)
                    {
                        start_of_comment = start_of_comment / width_divisor;
                        end_of_comment   = line.EndOfComment / width_divisor;
                        end = start_of_comment - 1;
                    }

                    if (start_of_comment < end_of_comment)
                    {
                        graphics.DrawLine(CodeToolWindow.CodePenCommentLine, new Point(left + start_of_comment, y), new Point(left + end_of_comment, y));
                    }

                    if (start < end)
                    {
                        graphics.DrawLine(CodeToolWindow.CodePenNormalLine, new Point(left + start, y), new Point(left + end, y));
                    }
                }

                int selected_double_click_length = 10;
                if (selected_double_click_length > 2)
                {
                    for (int l = 0; l < items.Count; l++)
                    {
                        Line line = items[l];
                        int  y    = l / height_divisor + rect.Y;
                        start = 0;
                        end   = 0;

                        if (line.HasWord)
                        {
                            int start_index = line.StartOfWords[0];
                            start = start_index / width_divisor;
                            if (start > panelSample.Width)
                            {
                                start = panelSample.Width - 6;
                            }
                            end = (start_index + selected_double_click_length) / width_divisor;
                            if (end > panelSample.Width)
                            {
                                end = panelSample.Width;
                            }
                            graphics.DrawLine(
                                CodeToolWindow.CodePenSelectedWord,
                                new Point(left + start, y),
                                new Point(left + end, y));
                        }
                    }
                }
            }
            catch
            {
            }
        }