Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Рисование на Image


Страницы:   1 2

BAngel ©   (2006-05-22 21:06:00) 

Здраствуйте уважаемые мастера делфи. Подскажите пожалуйста как на пустом Имадже нарисовать пиксель???????


Gydvin   (2006-05-22 23:45:00) [1]


>  Если чо я завтра после семи(украинское время) опять объявлюсь.
> :-)))))


Прям как на работу ))))


BAngel   (2006-05-22 23:35:00) [2]


> procedure TForm1.Button2Click(Sender: TObject);
> var
> bitmap:tbitmap ;
> x,y,a,b:integer;
> begin
> bitmap:=tbitmap.Create;
> x:=100;  /////размер рисунка по ширине
> y:=100;  /////размер рисунка по высоте
> bitmap.Width:=x;
> bitmap.Height:= y ;
>
> for a:=0 to x do
> for b:=0 to y do bitmap.Canvas.Pixels[a,b]:=clred;
>  bitmap.SaveToFile('test.bmp');
> image1.Picture.Bitmap.Assign(bitmap);    //////это можно
> исключить
> bitmap.Free;
> end;
>

Огромное спасибо!!!!!!!!)))))))))))) Если чо я завтра после семи(украинское время) опять объявлюсь.:-)))))


Gydvin   (2006-05-22 23:26:00) [3]


> Нет, но ведь это можно посчитать. А можно чуть чуть отредактировать
> ту прогу, которая создаёт этот файл, так что бы она записывала
> в него размер рисунка


ок

procedure TForm1.Button2Click(Sender: TObject);
var
bitmap:tbitmap ;
x,y,a,b:integer;
begin
bitmap:=tbitmap.Create;
x:=100;  /////размер рисунка по ширине
y:=100;  /////размер рисунка по высоте
bitmap.Width:=x;
bitmap.Height:= y ;

for a:=0 to x do
for b:=0 to y do bitmap.Canvas.Pixels[a,b]:=clred;
 bitmap.SaveToFile('test.bmp');
image1.Picture.Bitmap.Assign(bitmap);    //////это можно исключить
bitmap.Free;
end;


BAngel   (2006-05-22 23:15:00) [4]

Нет, но ведь это можно посчитать. А можно чуть чуть отредактировать ту прогу, которая создаёт этот файл, так что бы она записывала в него размер рисунка


Gydvin   (2006-05-22 23:09:00) [5]

размер рисунка заранее известен?


BAngel   (2006-05-22 22:57:00) [6]


> Gydvin ©   (22.05.06 22:49) [18]

Вобщем у меня есть текстовый файл с набором 0-й и 1-ц (0-один цвет, 1-другой цвет). Программа читает этот файл и рисует его на Имедже. Рисунок может быть любого размера и занимать всю область Имеджа. Потом этот рисунок должен сохраняться в натуральную величину.


Gydvin   (2006-05-22 22:49:00) [7]


> BAngel   (22.05.06 22:41) [17]


а рисунок больше размера компонента image ?


BAngel   (2006-05-22 22:41:00) [8]


> image1.Canvas.Pixels[x,y]:=clred;

Я попробовал просто заполнить весь Имадж одном цветом. Получилось. Я вот что подумал. Может дело в том что рисунок должен получится больше Имадж. Если не получается из-за этого, может нужно маштабировать координаты.


Gydvin   (2006-05-22 22:33:00) [9]


> меняем
>
>
> > procedure TForm1.Image1MouseMove(Sender: TObject; Shift:
>
> >  TShiftState; X,
> >  Y: Integer);
> > begin
> > if cont then Canvas.Pixels[x,y]:=clred;
> > end;


вай-вай

на

procedure TForm1.FormMouseMove(Sender: TObject; Shift:
 TShiftState; X,
 Y: Integer);
begin
if cont then Canvas.Pixels[x,y]:=clred;
end;


Gydvin   (2006-05-22 22:30:00) [10]


> procedure TForm1.Image1MouseMove(Sender: TObject; Shift:
>  TShiftState; X,
>  Y: Integer);
> begin
> if cont then image1.Canvas.Pixels[x,y]:=clred;
> end;


меняем


> procedure TForm1.Image1MouseMove(Sender: TObject; Shift:
>  TShiftState; X,
>  Y: Integer);
> begin
> if cont then Canvas.Pixels[x,y]:=clred;
> end;


создадим новый проект ничего туда не кидая рисуем просто по форме

работает?


BAngel   (2006-05-22 22:07:00) [11]


> image1.Canvas.Pixels[x,y]:=clred;

У меня почему то не работает. В принципе ошибки не выбивает, но ничего не рисует. И вобще этот процес должен серьёзно загрузить комп. Такое впечатление, что ничего не происходит


Gydvin   (2006-05-22 21:50:00) [12]


> Gydvin ©   (22.05.06 21:34) [7]
>
>
> > Efir   (22.05.06 21:31) [6]
>
>
> Тут уже были с подобными проблемами ))) скорее всего [5]



> BAngel   (22.05.06 21:35) [8]
>
>
> > Gydvin ©   (22.05.06 21:28) [5]
>
> Я рад, что вы мне опять помогаете. Теперь я уверен, что
> моя проблема будет решена.


Посмотрел в поиске и понял, что баян ))))

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ExtCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   Image1: TImage;
   procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
     Shift: TShiftState; X, Y: Integer);
   procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
     Y: Integer);
   procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
     Shift: TShiftState; X, Y: Integer);
 private
 cont:boolean;
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
cont:=true;
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
begin
if cont then image1.Canvas.Pixels[x,y]:=clred;
end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
cont:=false;
end;

end.


все работает


Джо   (2006-05-22 21:50:00) [13]

> [11] BAngel   (22.05.06 21:44)
>
> >
> > Или переменные цикла i и j.
>
> Ну почти. Только у меня цикл While. А i и j просто увеличиваются
> на 1

И что не так? While и есть одним из операторов цикла.


BAngel   (2006-05-22 21:44:00) [14]


>
> Или переменные цикла i и j.

Ну почти. Только у меня цикл While. А i и j просто увеличиваются на 1


Джо   (2006-05-22 21:39:00) [15]

> [9] Efir   (22.05.06 21:38)
> Значит здесь вмешались космические силы.

Или переменные цикла i и j.


Efir   (2006-05-22 21:38:00) [16]


> Сделал. Не помогло.


Значит здесь вмешались космические силы.


BAngel   (2006-05-22 21:35:00) [17]


> Gydvin ©   (22.05.06 21:28) [5]

Я рад, что вы мне опять помогаете. Теперь я уверен, что моя проблема будет решена.
>
> да ну!  У image autosize сделайте true

Сделал. Не помогло.


Gydvin   (2006-05-22 21:34:00) [18]


> Efir   (22.05.06 21:31) [6]


Тут уже были с подобными проблемами ))) скорее всего [5]


Efir   (2006-05-22 21:31:00) [19]

Странно, должно работать.
Попробуй с использованием WinApi

SetPixel(Image.Canvas.Handle,X,Y,Color);

или

SetPixel(Image.Picture.Bitmap.Canvas.Handle,X,Y,Color);


Gydvin   (2006-05-22 21:28:00) [20]


> BAngel   (22.05.06 21:16) [2]
>
>
> > Image1.Canvas.Pixels[X,Y]:=Color;
> >
>
> Так не работает.
>


да ну!  У image autosize сделайте true


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо