Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.137.220.120] |
|
Сообщ.
#1
,
|
|
|
Проблема в следующем. Есть pictureBox с картинкой, нужно чтобы при движении по нему мышкой рисовался прямоугольник, изменяющийся в зависимости от положения курсора. Но на битмапе не отрожался. Буду признателен за любые идеи.
|
Сообщ.
#2
,
|
|
|
Я это, правда, уже писал в какой-то теме.. пробуй
public partial class Form2 : Form { public Form2() { InitializeComponent(); this.pictureBox1.Paint += new PaintEventHandler(pictureBox1_Paint); this.pictureBox1.MouseDown += new MouseEventHandler(pictureBox1_MouseDown); this.pictureBox1.MouseMove += new MouseEventHandler(pictureBox1_MouseMove); this.pictureBox1.MouseUp += new MouseEventHandler(pictureBox1_MouseUp); } private int X0, Y0, curX, curY; private bool fMouseDown; private void pictureBox1_Paint(object sender, PaintEventArgs e) { if (fMouseDown) { if (X0 <= curX) { if (Y0 <= curY) { e.Graphics.DrawRectangle(new Pen(Color.Black), new Rectangle(X0, Y0, curX - X0, curY - Y0)); } else { e.Graphics.DrawRectangle(new Pen(Color.Black), new Rectangle(X0, curY, curX - X0, Y0 - curY)); } } else { if (Y0 <= curY) { e.Graphics.DrawRectangle(new Pen(Color.Black), new Rectangle(curX, Y0, X0 - curX, curY - Y0)); } else { e.Graphics.DrawRectangle(new Pen(Color.Black), new Rectangle(curX, curY, X0 - curX, Y0 - curY)); } } } } private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { fMouseDown = true; X0 = e.X; Y0 = e.Y; } private void pictureBox1_MouseMove(object sender, MouseEventArgs e) { if (fMouseDown) { curX = e.X; curY = e.Y; this.pictureBox1.Refresh(); } } private void pictureBox1_MouseUp(object sender, MouseEventArgs e) { fMouseDown = false; } } |
Сообщ.
#3
,
|
|
|
Огромное Спасибо TohaSan. То что нужно.
|
Сообщ.
#4
,
|
|
|
TohaSanТы случаем не знаеш, как изменить resolution у bitmap'a?
|
Сообщ.
#5
,
|
|
|
метод SetResolution
|
Сообщ.
#6
,
|
|
|
Sorry, я не то имел ввиду. У меня есть картинка ч/б 35*27 тчк, мне нужно засунуть её в 10*10 тчк.
Я грешным делом попробовал следующее public Bitmap ChangeResolution(Bitmap btm) { int width = btm.Width; int height = btm.Height; Bitmap dstbtm=new Bitmap(10,10); Color cl=new Color(); int count=0; for (int i = 0; i < width; i+=width/10) for (int j = 0; j < height; j+=height/10) { cl= btm.GetPixel(i, j); } for (int i=0;i<10;i++ ) for(int j=0; j<10; j++) { dstbtm.SetPixel(i , j , cl); } return dstbtm; } Но проблема с cl. Уже задолбался. |
Сообщ.
#7
,
|
|
|
Не надо так делать.
Пусть bmp10 - картинка 10*10, bmp35 - та, которую надо засунуть. Graphics g = Graphis.FromImage(bmp10); g.DrawImage(bmp35, 0, 0, bmp10.Width, bmp10.Height); Как-то так |
Сообщ.
#8
,
|
|
|
Ещё не забудь написать
g.CompositingQuality = CompositingQuality.HighQuality; g.InterpolationMode = InterpolationMode.HighQualityBicubic; перед DrawImage для улучшения качества ресайза. |
Сообщ.
#9
,
|
|
|
WDK, Спасибо, помогло.
|