powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / C# рисование кривых в bmp мышью
15 сообщений из 15, страница 1 из 1
C# рисование кривых в bmp мышью
    #37880527
Oilboy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В архиве проект с данными и примером получаемой картинки. Не получается использовать обработчик кликов мыши для формируемого из данных bmp в форме. Код обработчика добавлен в frmMan.cs . Клик правой кнопки мыши задает начальную точку кривой, конечная точка определяется при отпускании мыши, но на экране ничего не отображается.
...
Рейтинг: 0 / 0
C# рисование кривых в bmp мышью
    #37880529
Oilboy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
C# рисование кривых в bmp мышью
    #37880532
Oilboy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
C# рисование кривых в bmp мышью
    #37880533
Oilboy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
C# рисование кривых в bmp мышью
    #37880534
Oilboy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
C# рисование кривых в bmp мышью
    #37880791
Oilboy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПОмогите плиз с вопросом.
...
Рейтинг: 0 / 0
C# рисование кривых в bmp мышью
    #37880802
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oilboy,

*жалобно*
А можно просто обработчики событий MouseDown и MouseUp, а не архив в пяти частях? Если здоровые - спрячьте в тег SPOILER.
...
Рейтинг: 0 / 0
C# рисование кривых в bmp мышью
    #37880823
Oilboy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Abstraction,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace ShowPalette
{
    public partial class frmMain : Form
    {
        private PaletteView _view = null;
        private bool mouseDown = false;
        private Point lastPoint = Point.Empty;
        private string color = "black";
        private Graphics g;
        private Pen p;
        public frmMain()
        {
            InitializeComponent();
            _view = new PaletteView();
           // g = _view.g;
        }
        protected override void OnMouseDown(MouseEventArgs e)
        {
            mouseDown = true;
            if (e.Button == MouseButtons.Right)
            {
                ContextMenu m = new ContextMenu();
                m.MenuItems.Add(0, new MenuItem("black", new EventHandler(RightMouseButton_Click)));
                m.MenuItems.Add(1, new MenuItem("white", new EventHandler(RightMouseButton_Click)));
                m.MenuItems.Add(2, new MenuItem("red", new EventHandler(RightMouseButton_Click)));
                m.MenuItems.Add(3, new MenuItem("green", new EventHandler(RightMouseButton_Click)));
                m.MenuItems.Add(4, new MenuItem("blue", new EventHandler(RightMouseButton_Click)));
                m.Show(this, new Point(e.X, e.Y));
            }
        }
        protected void RightMouseButton_Click(object sender, EventArgs e)
        {
            color = ((MenuItem)sender).Text;
            p = new Pen(Color.FromName(color));
        }
        protected override void OnMouseUp(MouseEventArgs e)
        {
            mouseDown = false;
        }
        protected override void OnMouseMove(MouseEventArgs e)
        {
            if (lastPoint.Equals(Point.Empty)) lastPoint = new Point(e.X, e.Y);
            if (mouseDown)
            {
                using( g=Graphics.FromImage(_view.bmp))
                {

                Point pMousePos = new Point(e.X, e.Y);
                g.DrawLine(p, pMousePos, lastPoint);
                }
            }
            lastPoint = new Point(e.X, e.Y);
        }




        private void btnOK_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void frmMain_Load(object sender, EventArgs e)
        {
            picMain.Image = _view.Image;
        }

        private void iOpenData_Click(object sender, EventArgs e)
        {
            dlgOpenFile.Filter = @"Txt files (*.txt)|*.txt|All files (*.*)|*.*";
            dlgOpenFile.FilterIndex = 1;
            dlgOpenFile.RestoreDirectory = true;
            dlgOpenFile.FileName = string.Empty;
            if (DialogResult.OK == dlgOpenFile.ShowDialog())
            {
                string filename = dlgOpenFile.FileName;
                _view.ReadData(filename);
                picMain.Image = _view.Image;
            }
        }

        private void iOpenImage_Click(object sender, EventArgs e)
        {
            dlgOpenFile.Filter = @"Txt files (*.bmp;*.png;*.jpg)|*.bmp|All files (*.*)|*.*";
            dlgOpenFile.FilterIndex = 1;
            dlgOpenFile.RestoreDirectory = true;
            dlgOpenFile.FileName = string.Empty;
            if (DialogResult.OK == dlgOpenFile.ShowDialog())
            {
                string filename = dlgOpenFile.FileName;
                picMain.PictureFile = filename;
            }
        }

        private void iSaveImage_Click(object sender, EventArgs e)
        {
            if (picMain.Image == null)
                return;
            dlgSaveFile.Filter = "Bitmap files (*.bmp)|*.bmp|All files (*.*)|*.*";
            dlgOpenFile.FilterIndex = 1;
            dlgOpenFile.RestoreDirectory = true;
            dlgSaveFile.FileName = string.Empty;
            if (DialogResult.OK == dlgSaveFile.ShowDialog())
            {
                string filename = dlgSaveFile.FileName;
                picMain.Image.Save(filename);
            }
        }
      /*  private void button1_Click(object sender, EventArgs e)
        {
            Graphics g = this.CreateGraphics(); // this - для наглядности, можно рисовать на чем угодно, например на кнопке button1.
            Pen pen = new Pen(System.Drawing.Color.Black);

            g.DrawLine(pen, 0, 0, 100, 100);

            g.Dispose();
        } */
        private void button1_Click(object sender, EventArgs e)
        {
            Bitmap bmp = new Bitmap(100, 100);
            Graphics g = Graphics.FromImage(bmp);
            Color color = Color.White;
            Rectangle rectangle = new Rectangle(1, 2, 35, 35);
            g.DrawRectangle(new Pen(color), rectangle);
           // pictureBox1.Image = bmp;
        }

        private void iClear_Click(object sender, EventArgs e)
        {
            picMain.Image = null;
            _view.Refresh();
        }

        private void picMain_Paint(object sender, PaintEventArgs e)
        {

        }

    }
}





Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
243.
244.
245.
246.
247.
248.
249.
250.
251.
252.
253.
254.
255.
256.
257.
258.
259.
260.
261.
262.
263.
264.
265.
266.
267.
268.
269.
270.
271.
272.
273.
274.
275.
276.
277.
278.
279.
280.
281.
282.
283.
284.
285.
286.
287.
288.
289.
290.
291.
292.
293.
294.
295.
296.
297.
298.
299.
300.
301.
302.
303.
304.
305.
306.
307.
308.
309.
310.
311.
312.
313.
314.
315.
316.
317.
318.
319.
320.
321.
322.
323.
324.
325.
326.
327.
328.
329.
330.
331.
332.
333.
334.
335.
336.
337.
338.
339.
340.
341.
342.
343.
344.
345.
346.
347.
348.
349.
350.
351.
352.
353.
354.
355.
356.
357.
358.
359.
360.
361.
362.
363.
364.
365.
366.
367.
368.
369.
370.
371.
372.
373.
374.
375.
376.
377.
378.
379.
380.
381.
382.
383.
384.
385.
386.
387.
388.
389.
390.
391.
392.
393.
394.
395.
396.
397.
398.
399.
400.
401.
402.
403.
404.
405.
406.
407.
408.
409.
410.
411.
412.
413.
414.
415.
416.
417.
418.
419.
420.
421.
422.
423.
424.
425.
426.
427.
428.
429.
430.
431.
432.
433.
434.
435.
436.
437.
438.
439.
440.
441.
442.
443.
444.
445.
446.
447.
448.
449.
450.
451.
452.
453.
454.
455.
456.
457.
458.
459.
460.
461.
462.
463.
464.
465.
466.
467.
468.
469.
470.
471.
472.
473.
474.
475.
476.
477.
478.
479.
480.
481.
482.
483.
484.
485.
486.
487.
488.
489.
490.
491.
492.
493.
494.
495.
496.
497.
498.
499.
500.
501.
502.
503.
504.
505.
506.
507.
508.
509.
510.
511.
512.
513.
514.
515.
516.
517.
518.
519.
520.
521.
522.
523.
524.
525.
526.
527.
528.
529.
530.
531.
532.
533.
534.
535.
536.
537.
538.
539.
540.
541.
542.
543.
544.
545.
546.
547.
548.
549.
550.
551.
using System.Windows.Forms;
using System.Drawing;
using System.Drawing.Imaging;
using System.Globalization;
using System.IO;

namespace ShowPalette
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    /// <summary>
    /// TODO: Update summary.
    /// </summary>
    public class PaletteView
    {



        private int _w = 1;
        public int W
        {
            get
            {
                return _w;
            }
            set
            {
                _w = value;
            }
        }

        private int _h = 1;
        public int H
        {
            get
            {
                return _h;
            }
            set
            {
                _h = value;
            }
        }

        private double[,] _data;

        private double[] _visota;

        public double[] Visota
        {
            get
            {
                return _visota;
            }
            set
            {
                _visota = value;
                Refresh();
            }
        }

        
        public double[,] Data
        {
            get
            {
                return _data;
            }
            set
            {
                _data = value;
                Refresh();
            }
        }


        public int Width
        {
            get
            {
                return W * Columns;
            }
        }


        public int Height
        {
            get
            {
                return H * Rows;
            }
        }


        private Bitmap _bmp = null;

        public Bitmap Image
        {
            get
            {
                if (_bmp == null)
                {
                    _bmp = DrawBitmap();
                }
                return _bmp;
            }
        }

        public void Refresh()
        {
            if (_bmp != null)
            {
                _bmp.Dispose();
                _bmp = null;
            }
        }

        public void ReadData(string textfile)
        {
            // textfile = "C:\\Users\\aem00511\\Documents\\Paint3\\pustoi\\Debug\\file.txt";

            //Data = To2dArray(list);
            StreamReader f = new StreamReader(textfile);
            string buf;
            //double[,] Da;
            Data = new double[1000, 361];
           // double[] Visota; 
            Visota = new double[1000000];
            int k = 0;
            int l = 0;
            // _data = new double[100, 360];
            //int zz=0;
            //for (int ss = 0; ss < 3000; ss++)
            //{
                buf = f.ReadLine();
            //}
                for (int i = 0; i < 73000; i++)
            {
                buf = f.ReadLine();
                //Console.WriteLine(buf);
                //Console.ReadLine();

                 if (buf.Length < 20)
                 {

                     
                     Data[k,l] = Convert.ToDouble(buf);
                     l++;
                 }
                if (buf.Length > 20)
                {
                    char[] delimiterChars = { ' ' };
                    string[] number = buf.Split(delimiterChars);

                    for (int j = 0; j < number.Length; j++)
                        if (number[j] != "")
                        {
                            Data[k, l] = Convert.ToDouble(number[j]);
                            l++;
                        }
                }
                if (l == 361)
                {
                    k++;
                    l = 0;
                    // Data[k, l] = Convert.ToDouble(buf);
                }



            }






        }

        public int Rows
        {
            get
            {
                return Data.GetLength(0);
            }
        }

        public int Columns
        {
            get
            {
                return Data.GetLength(1);
            }
        }
        public Bitmap bmp;
        public Graphics g;
        private Bitmap DrawBitmap()
        {
            bmp = new Bitmap(Width+500, Height, PixelFormat.Format16bppRgb565);
            try
            {
                using (g = Graphics.FromImage(bmp))
                {
                    Brush c = new SolidBrush(Color.White);
                    g.FillRectangle(c, 0, 0, 100, Height);
                     //Pen blackPen = new Pen(Color.Black,1);
                    // g.DrawRectangle(blackPen, 0, 0, 100, Height);
                     Pen blackPen = new Pen(Color.Black, 3);
                     int a1=0;
                     int a2=0;
                    //int num1=0;
                    // int num2 = 0;
                  // double min=1000000;
                     int kk;
                     int yy=0;
                    // int zz = 0;
                     int[,] arr;
                     arr = new int[1000,2];  
                   int z = Convert.ToInt16(Data[0, 0]);
                    for (kk=1; kk<Rows;kk++)
                    {
                        a1 = Convert.ToInt16(Data[kk, 0]);
                        a2 = Convert.ToInt16(Data[kk-1, 0]);
                        if (a1 - a2 == 1)
                        {
                           // num1 = kk;
                            arr[yy,0] = a1;
                            arr[yy, 1] = kk;
                            yy++;    
                        }

                    }
                    /*int lc;
                    for (lc = num1+1; lc < Rows; lc++)
                    {
                        a3 = Convert.ToInt16(Data[lc, 0]);
                        a4 = Convert.ToInt16(Data[lc - 1, 0]);
                        if (a3 - a4 == 1)
                        {
                            num2 = lc;
                            break;
                        }
                    }
                    */
                    int w=0;
                    for(w=0;w<1000;w++)
                    {
                        if (arr[w, 0] == 0) break;
                    }


                    for (int i = 0; i < Rows; i++)
                    {
                        //условие на вывод высот

                        
                        
                            // Create string to draw.
                           



                        
                        for (int j = 1; j < Columns; j++)
                        {
                            using (Brush b = new SolidBrush(GetColor(i, j)))
                            {
                                
                                g.FillRectangle(b, 100+j * W, i * H, W, H);

                                //g.
                            }
                        }
                    }
                    
                    //int sh=num2-num1;
                    //int ch = (Rows - num1) / sh;
                    int kol ;
                    for (int vv =0 ; vv < w;vv++ )
                    {

                        kol = arr[vv,1];
                      
                        for (int qq = 0; qq < 10; qq++)
                        {

                            
                            Pen blackPen10 = new Pen(Color.Black, 1);
                            Point point1 = new Point(75, kol);
                            Point point2 = new Point(100, kol);
                            Point point11 = new Point(660, kol);
                            Point point12 = new Point(860, kol);

                            // Draw line to screen.
                            g.DrawLine(blackPen10, point1, point2);
                            g.DrawLine(blackPen10, point11, point12);
                            // kol = kol + sh / 10;
                            kol = kol + 39;
                        }
                    }

                    kol = arr[0, 1];
                    for (int qq = 0; qq < 10; qq++)
                    {


                        Pen blackPen10 = new Pen(Color.Black, 1);
                        Point point1 = new Point(75, kol);
                        Point point2 = new Point(100, kol);
                        Point point11 = new Point(660, kol);
                        Point point12 = new Point(860, kol);
                        // Draw line to screen.
                        g.DrawLine(blackPen10, point1, point2);
                        g.DrawLine(blackPen10, point11, point12);
                        // kol = kol + sh / 10;
                        kol = kol - 39;
                    }

                    //int kol2 = num1;
                   /* for (int vv = 0; vv < (ch + 1) * 10; vv++)
                    {

                        Pen blackPen10 = new Pen(Color.Black, 1);
                        Point point1 = new Point(75, kol2);
                        Point point2 = new Point(100, kol2);

                        // Draw line to screen.
                        g.DrawLine(blackPen10, point1, point2);
                        //kol2 = kol2 - sh / 10;
                    }*/
                    
                    for (int xx = 0; xx < w; xx++)
                    {
                        int ccc=Convert.ToInt16(arr[xx,0]);
                        String drawString1 = Convert.ToString(ccc);

                        // Create font and brush.
                        Font drawFont = new Font("Arial", 16);
                        SolidBrush drawBrush = new SolidBrush(Color.Black);

                        // Create rectangle for drawing.
                        float x = 0;
                        float y = arr[xx,1] - 10;
                        float width = 150;
                        float height = 200;
                        RectangleF drawRect = new RectangleF(x, y, width, height);
                        

                        // Draw rectangle to screen.
                        // Pen blackPen = new Pen(Color.Black);
                        // g.DrawRectangle(blackPen, x, y, width, height);

                        // Draw string to screen.
                        g.DrawString(drawString1, drawFont, drawBrush, drawRect);

                        // Pen blackPen = new Pen(Color.Black, 1);

                        Point point1 = new Point(55, arr[xx,1]);
                        Point point2 = new Point(100, arr[xx,1]);
                        Point point11 = new Point(660, arr[xx, 1]);
                        Point point12 = new Point(860, arr[xx, 1]);
                        // Draw line to screen.
                        g.DrawLine(blackPen, point1, point2);
                       g.DrawLine(blackPen, point11, point12);
                       // num1 = num1 + sh;
                    
                    }
                    
                    


                    Brush cc = new SolidBrush(Color.White);
                    g.FillRectangle(cc, 460, 0, 200, Height);
                    g.FillRectangle(cc, 660, 0, 200, Height);
                    Pen blackPen2 = new Pen(Color.White, 1);

                    // Create rectangle.
                    Rectangle rect = new Rectangle(0, 0, 100, Height);

                    Rectangle rect1 = new Rectangle(460, 0, 200, Height);

                    Rectangle rect2 = new Rectangle(660, 0, 250, Height);
                    //Rectangle rect3 = new Rectangle(861, 0, 49, Height);

                    // Draw rectangle to screen.
                    g.DrawRectangle(blackPen2, rect);
                    g.DrawRectangle(blackPen2, rect1);
                    g.DrawRectangle(blackPen2, rect2);
                  //  g.DrawRectangle(blackPen2, rect3);
                    for (int vv = 0; vv < w; vv++)
                    {

                        kol = arr[vv, 1];
                      
                        for (int qq = 0; qq < 10; qq++)
                        {


                            Pen blackPen10 = new Pen(Color.Black, 1);
                           
                            Point point11 = new Point(660, kol);
                            Point point12 = new Point(860, kol);

                          
                            g.DrawLine(blackPen10, point11, point12);
                            // kol = kol + sh / 10;
                            kol = kol + 39;
                        }
                    }

                    kol = arr[0, 1];
                    for (int qq = 0; qq < 10; qq++)
                    {


                        Pen blackPen10 = new Pen(Color.Black, 1);
                       
                        Point point11 = new Point(660, kol);
                        Point point12 = new Point(860, kol);
                        // Draw line to screen.
                      
                        g.DrawLine(blackPen10, point11, point12);
                        // kol = kol + sh / 10;
                        kol = kol - 39;
                    }
                    for (int vv = 0; vv < w; vv++)
                    {

                        kol = arr[vv, 1];

                        


                            Pen blackPen10 = new Pen(Color.Black, 3);

                            Point point11 = new Point(660, kol);
                            Point point12 = new Point(860, kol);


                            g.DrawLine(blackPen10, point11, point12);
                            // kol = kol + sh / 10;
                          
                    }

                   // int xx = 660;
                    for (int qq = 0; qq < 10; qq++)
                    {


                        Pen blackPen10 = new Pen(Color.Black, 1);
                        //int zz=660
                        Point point11 = new Point(660+20*qq, 0);
                        Point point12 = new Point(660+20*qq, Height);
                        // Draw line to screen.

                        g.DrawLine(blackPen10, point11, point12);
                        // kol = kol + sh / 10;
                        
                    }
                    Pen blackPen11 = new Pen(Color.Black, 3);
                    Rectangle rect11 = new Rectangle(860, 0, 50, Height);
                    g.DrawRectangle(blackPen11, rect2);


                }
            }
            catch (Exception ex)
            {

                throw ex;
            }

            bmp.Save("Test.bmp");

            return bmp;
        }

        protected virtual Color GetColor(int x, int y)
        {
            double col = Data[x, y];
            Color cvet = Color.White;
            //if ( col <=15)
              // return cvet;
            
            if (col > 15 && col <= 31)
            {
                cvet=Color.FromArgb(255,255, 239, 143);
            }//FFEF8F
            if (col > 31 && col <= 47)
            {
                cvet = Color.FromArgb(255, 255, 215, 95);
            }//#FFD75F
            if (col > 47 && col <= 63)
            {
                cvet = Color.FromArgb(255, 255, 191, 103);
            }//#FFBF67 
            if (col > 63 && col <= 79)
            {
                cvet = Color.FromArgb(255, 255, 175, 0);
            }//#FFAF00 
            if (col > 79 && col <= 95)
            {
                cvet = Color.FromArgb(255, 255, 159, 0);
            }///#FF9F00
            if (col > 95 && col <= 111)
            {
                cvet = Color.FromArgb(255, 239, 151, 0);
            }//#EF9700
            if (col > 111 && col <= 127)
            {
                cvet = Color.FromArgb(255, 223, 135, 0);
            }//#DF8700
            if (col > 127 && col <= 143)
            {
                cvet = Color.FromArgb(255, 207, 119, 0);
            }//#CF7700
            if (col > 143 && col <= 159)
            {
                cvet = Color.FromArgb(255, 191, 103, 0);
            }//#BF6700
            if (col > 159 && col <= 175)
            {
                cvet = Color.FromArgb(255, 175, 95, 0);
            }//#AF5F00
            if (col > 175 && col <= 191)
            {
                cvet = Color.FromArgb(255, 159, 79, 0);
            }//#9F4F00
            if (col > 191 && col <= 207)
            {
                cvet = Color.FromArgb(255, 143, 63, 0);
            }//#8F3F00
            if (col > 207 && col <= 223)
            {
                cvet = Color.FromArgb(255, 119, 47, 0);
            }//#772F00 
            if (col > 223 && col <= 239)
            {
                cvet = Color.FromArgb(255, 87, 31, 0);
            }//#571F00
            if (col > 239 && col <= 255)
            {
                cvet = Color.FromArgb(255, 47, 0, 0);
            }//#2F0000
            return cvet;
        }
    }
}
...
Рейтинг: 0 / 0
C# рисование кривых в bmp мышью
    #37880838
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OilboyВ архиве проект с данными и примером получаемой картинки. Не получается использовать обработчик кликов мыши для формируемого из данных bmp в форме. Код обработчика добавлен в frmMan.cs . Клик правой кнопки мыши задает начальную точку кривой, конечная точка определяется при отпускании мыши, но на экране ничего не отображается.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
        protected override void OnMouseDown(MouseEventArgs e)
        {
            mouseDown = true;
            if (e.Button == MouseButtons.Right)
            {
                ContextMenu m = new ContextMenu();
                m.MenuItems.Add(0, new MenuItem("black", new EventHandler(RightMouseButton_Click)));
                m.MenuItems.Add(1, new MenuItem("white", new EventHandler(RightMouseButton_Click)));
                m.MenuItems.Add(2, new MenuItem("red", new EventHandler(RightMouseButton_Click)));
                m.MenuItems.Add(3, new MenuItem("green", new EventHandler(RightMouseButton_Click)));
                m.MenuItems.Add(4, new MenuItem("blue", new EventHandler(RightMouseButton_Click)));
                m.Show(this, new Point(e.X, e.Y));
            }
        }

        protected override void OnMouseUp(MouseEventArgs e)
        {
            mouseDown = false;
        }

И где здесь определение конечной точки?
...
Рейтинг: 0 / 0
C# рисование кривых в bmp мышью
    #37880890
Oilboy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Abstraction,

оно здесь
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
protected override void OnMouseMove(MouseEventArgs e)
        {
            if (lastPoint.Equals(Point.Empty)) lastPoint = new Point(e.X, e.Y);
            if (mouseDown)
            {
                using( g=Graphics.FromImage(_view.bmp))
                {

                Point pMousePos = new Point(e.X, e.Y);
                g.DrawLine(p, pMousePos, lastPoint);
                }
            }
            lastPoint = new Point(e.X, e.Y);
        }
...
Рейтинг: 0 / 0
C# рисование кривых в bmp мышью
    #37880913
Oilboy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oilboy,

Вот что мне посоветовали на другом форуме :
авторты неправильно подписываешься на event-ы. Надо не OnMouseMove перекрывать, а на event MouseMove подписываться. Это делается через дизайнер проще всего.

Правда, мне не удалось твой XPictureBox заставить обрабатывать MouseMove после загрузки картинки все равно, и некогда дальше разбираться.


авторТы оверрайдишь OnMouseDown у формочки, а не у контрола с картинкой, вот в чем различие
И когда оверрайдишь эти методы, правила хорошего тона советуют дергать base.OnMouseMove() или чонить подобное


Помогите эти советы заюзать, плиз...
...
Рейтинг: 0 / 0
C# рисование кривых в bmp мышью
    #37880914
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oilboy, не мог таблично задать GetColor(int x, int y) ? Этож индусский код мать его...
...
Рейтинг: 0 / 0
C# рисование кривых в bmp мышью
    #37880953
Oilboy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Я только учусь=))
...
Рейтинг: 0 / 0
C# рисование кривых в bmp мышью
    #37880995
Abstraction
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OilboyAbstraction,

оно здесь
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
protected override void OnMouseMove(MouseEventArgs e)
        {
            if (lastPoint.Equals(Point.Empty)) lastPoint = new Point(e.X, e.Y);
            if (mouseDown)
            {
                using( g=Graphics.FromImage(_view.bmp))
                {

                Point pMousePos = new Point(e.X, e.Y);
                g.DrawLine(p, pMousePos, lastPoint);
                }
            }
            lastPoint = new Point(e.X, e.Y);
        }

Бессмыслица. Почему здесь? Почему Вы модифицируете _view.bmp, но не синхронизируете её с picMain.Image? Почему вообще в PaletteView существуют одновременно bmp и _bmp, которые можно модифицировать по отдельности?
...
Рейтинг: 0 / 0
C# рисование кривых в bmp мышью
    #37881024
Oilboy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AbstractionБессмыслица. Почему здесь? Почему Вы модифицируете _view.bmp, но не синхронизируете её с picMain.Image? Почему вообще в PaletteView существуют одновременно bmp и _bmp, которые можно модифицировать по отдельности?
Подскажите как синхонизировать можно? Код я писал не с нуля..
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / C# рисование кривых в bmp мышью
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]