Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.72/74: Рейтинг темы: голосов - 74, средняя оценка - 4.72
72 / 17 / 2
Регистрация: 29.12.2010
Сообщений: 339
1

Нарисовать и стереть точку на форме

29.12.2010, 20:33. Показов 15364. Ответов 28
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как нарисовать точку на форме и стереть(не стирая то, что под точкой)?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.12.2010, 20:33
Ответы с готовыми решениями:

Нарисовать точку в форме
Буду весьма благодарен за помощь. Нужно чтобы при нажатии кнопки, а затем и при нажатии по...

Как нарисовать точку в форме (простейший графический редактор)?
Решил сделать простейший графический редактор и встретился с проблемой, никак не могу реализовать...

Как нарисовать точку
Какой способ/метод нужно использовать чтобы построить точку на графике координат. Т.е. для...

Нарисовать точку в BackgroundImage
Здравствуйте! Подскажите пожалуйста... Мне в задании необходимо нарисовать в программе различные...

28
6280 / 3565 / 898
Регистрация: 28.10.2010
Сообщений: 5,926
29.12.2010, 20:48 2
а зачем обязятельно рисовать, если можно поставить например панельразмером 1х1 пиксель
1
72 / 17 / 2
Регистрация: 29.12.2010
Сообщений: 339
29.12.2010, 20:50  [ТС] 3
Да мне нужно их много(
Я игру делаю типа space impact, надо стрельбу сделать
0
Заблокирован
29.12.2010, 21:05 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от Смирняга Посмотреть сообщение
Как нарисовать точку на форме и стереть(не стирая то, что под точкой)?
Можно как-нибудь так
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
//нарисовать точку
        private void button1_Click(object sender, EventArgs e)
        {
            Graphics g = this.CreateGraphics();
            g.FillRectangle(new SolidBrush(Color.Black), 10, 10, 2, 2);
        }
        //стереть точку
        private void button2_Click(object sender, EventArgs e)
        {
            Color c = this.BackColor;
            Graphics g = this.CreateGraphics();
            g.FillRectangle(new SolidBrush(c), 10, 10, 2, 2);
        }
1
72 / 17 / 2
Регистрация: 29.12.2010
Сообщений: 339
29.12.2010, 21:13  [ТС] 5
Погодь, не отходи)Проверю-напишу)

Добавлено через 5 минут
Всё хорошо, НО есть одна массивная проблема(
Если у меня стоит какая-нибудь картинка на форме, то при стирании вместо точки печатается точка цвета формы(В итоге если картинка красная, а цвет самой формы-белый, точка не сотрётся, а станет белой(
0
6280 / 3565 / 898
Регистрация: 28.10.2010
Сообщений: 5,926
29.12.2010, 21:21 6
у объекта Graphics есть метод Restore которые восстанавливает предыдущее состояние объекта, перед этим его надо сохранить в объект GraphicsState
1
72 / 17 / 2
Регистрация: 29.12.2010
Сообщений: 339
29.12.2010, 21:26  [ТС] 7
А как это всё сделать, чтобы точка двигалась направо?
0
6280 / 3565 / 898
Регистрация: 28.10.2010
Сообщений: 5,926
29.12.2010, 21:46 8
Я написал есть идеи потому что нашел пример в справке
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private void SaveRestore2(PaintEventArgs e)
{
 
    // Translate transformation matrix.
    e.Graphics.TranslateTransform(100, 0);
 
    // Save translated graphics state.
    GraphicsState transState = e.Graphics.Save();
 
    // Reset transformation matrix to identity and fill rectangle.
    e.Graphics.ResetTransform();
    e.Graphics.FillRectangle(new SolidBrush(Color.Red), 0, 0, 100, 100);
 
    // Restore graphics state to translated state and fill second
 
    // rectangle.
    e.Graphics.Restore(transState);
    e.Graphics.FillRectangle(new SolidBrush(Color.Blue), 0, 0, 100, 100);
}
Только у меня он так как я хочу не работает. Еще вопросы?
1
72 / 17 / 2
Регистрация: 29.12.2010
Сообщений: 339
29.12.2010, 21:50  [ТС] 9
Цитата Сообщение от Петррр Посмотреть сообщение
Еще вопросы?
Еесть вопросы)
C#
1
 e.Graphics.TranslateTransform(100, 0);
Что делает?
C#
1
 GraphicsState transState = e.Graphics.Save();
Что делает?
0
6280 / 3565 / 898
Регистрация: 28.10.2010
Сообщений: 5,926
29.12.2010, 21:52 10
тебе как раз нужен вот это Save
1
72 / 17 / 2
Регистрация: 29.12.2010
Сообщений: 339
29.12.2010, 21:58  [ТС] 11
У меня всё это C# отмечает синим(
0
Эксперт .NET
4432 / 2092 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
29.12.2010, 21:59 12
Наводишь курсор мыши на слово, которое тебя интересует и в твоём конкретном случае, жмёшь F12 и ты видишь:
//
// Сводка:
// Изменяет начало координат координатной системы путем добавления заданного
// сдвига к матрице преобразования данного объекта System.Drawing.Graphics.
//
// Параметры:
// dx:
// Координата X сдвига.
//
// dy:
// Координата Y сдвига.
[TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
public void TranslateTransform(float dx, float dy);
1
72 / 17 / 2
Регистрация: 29.12.2010
Сообщений: 339
29.12.2010, 22:12  [ТС] 13
А можно как нибудь просто обновить форму(стереть всю графику(не меняя всего, что на форме(picturebox-ы,label-ы и т.д.)))
0
6280 / 3565 / 898
Регистрация: 28.10.2010
Сообщений: 5,926
29.12.2010, 22:26 14
Нажимай на кнопку там с боку будет белый пиксель прорисовываться

Добавлено через 46 секунд
Вот проект
Вложения
Тип файла: rar WindowsFormsApplication9.rar (7.5 Кб, 45 просмотров)
1
72 / 17 / 2
Регистрация: 29.12.2010
Сообщений: 339
29.12.2010, 22:31  [ТС] 15
Где нажимать-то?

Добавлено через 21 секунду
Всё, увидел)

Добавлено через 1 минуту
Всё ок, а исходник не дашь?))
0
6280 / 3565 / 898
Регистрация: 28.10.2010
Сообщений: 5,926
29.12.2010, 22:32 16
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

C#
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
 
namespace WindowsFormsApplication9
{
    public partial class Form1 : Form
    {
        Graphics gr;
        Bitmap pixel;
        Bitmap bmp;
        MemoryStream mem;
        int pos;
        public Form1()
        {
            InitializeComponent();
            gr = pictureBox1.CreateGraphics();
            pixel = new Bitmap(1, 1);
            pixel.SetPixel(0, 0, Color.White);
            pos = 1;
            mem = new MemoryStream();
            gr.Clear(Color.White);
            bmp = new Bitmap(pictureBox1.Image);
            bmp.Save(mem, System.Drawing.Imaging.ImageFormat.Jpeg);
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            gr.DrawImage(Image.FromStream(mem), 0, 0);
            gr.DrawImage(pixel, 1, pos);
            pos++;
        }
    }
}
1
72 / 17 / 2
Регистрация: 29.12.2010
Сообщений: 339
29.12.2010, 22:36  [ТС] 17
using System.Linq;
у меня на эту строчку с# ругается
0
6280 / 3565 / 898
Регистрация: 28.10.2010
Сообщений: 5,926
29.12.2010, 22:41 18
удали ее, она тебе не нужна
1
72 / 17 / 2
Регистрация: 29.12.2010
Сообщений: 339
29.12.2010, 22:49  [ТС] 19
А дизайнер у тебя из чего состоит?

Добавлено через 6 минут
Всё спасибо)Та мне очень помог)
0
6280 / 3565 / 898
Регистрация: 28.10.2010
Сообщений: 5,926
29.12.2010, 22:49 20
pcitureBox1 и button1
0
29.12.2010, 22:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.12.2010, 22:49
Помогаю со студенческими работами здесь

Как нарисовать точку на pictureBox?
Как нарисовать точку на pictureBox? Именно точку, в один пиксель. grFront.DrawLine(pen, i, j, i,...

Нарисовать точку на picturebox с модификатором StretchImage
собственно вот такая ситуация есть picturebox с модификатором StretchImage то есть Image...

Как поставить точку на форме
Мне в программе надо ставить точку по расчитанным координатам. Немного поискал и нашел решение :...

Нарисовать точку в центре экрана поверх всех окон
Здравствуйте, уважаемые знатоки! ;) У меня есть просьба, а именно: нужно написать программу которая...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru