Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.11;
Скачать: CL | DM;

Вниз

Рисование на Image   Найти похожие ветки 

 
BAngel   (2006-05-22 21:06) [0]

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


 
jb   (2006-05-22 21:09) [1]


Image1.Canvas.Pixels[X,Y]:=Color;

X,Y - координаты;
Color - Цвет


 
BAngel   (2006-05-22 21:16) [2]


> Image1.Canvas.Pixels[X,Y]:=Color;
>

Так не работает.


 
Efir   (2006-05-22 21:21) [3]


> BAngel


А как ты пишешь?


 
BAngel   (2006-05-22 21:26) [4]


> А как ты пишешь?

По началу было так:Image.Picture.Bitmap.Canvas.Pixels[i,j]:=cb2, это потому что у меня изображение больше чем Имадж.
Но я пробовал и так:Image.Canvas.Pixels[i,j]:=cb2
cb2:TColor


 
Gydvin ©   (2006-05-22 21:28) [5]


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


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


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

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

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

или

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


 
Gydvin ©   (2006-05-22 21:34) [7]


> Efir   (22.05.06 21:31) [6]


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


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


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

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

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


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


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


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


 
Джо ©   (2006-05-22 21:39) [10]

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

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


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


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

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


 
Джо ©   (2006-05-22 21:50) [12]

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

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


 
Gydvin ©   (2006-05-22 21:50) [13]


> 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.


все работает


 
BAngel   (2006-05-22 22:07) [14]


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

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


 
Gydvin ©   (2006-05-22 22:30) [15]


> 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;


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

работает?


 
Gydvin ©   (2006-05-22 22:33) [16]


> меняем
>
>
> > 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;



 
BAngel   (2006-05-22 22:41) [17]


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

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


 
Gydvin ©   (2006-05-22 22:49) [18]


> BAngel   (22.05.06 22:41) [17]


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


 
BAngel   (2006-05-22 22:57) [19]


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

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


 
Gydvin ©   (2006-05-22 23:09) [20]

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


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

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


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


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


ок

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:35) [23]


> 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:45) [24]


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


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



Страницы: 1 вся ветка

Текущий архив: 2006.06.11;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.04 c
4-1142791086
Alex_PP
2006-03-19 20:58
2006.06.11
Как преоброзовать HWND в String ?


11-1127931560
Kozz
2005-09-28 22:19
2006.06.11
Почему Thread1 останавливается ?


9-1131311266
Yegorchic
2005-11-07 00:07
2006.06.11
Что-то добавить в Behaviours объекта в GLScene в Run-Time?


1-1146481260
Vir
2006-05-01 15:01
2006.06.11
многопоточность и общие переменные


2-1148290948
WebSqlNeederr
2006-05-22 13:42
2006.06.11
У меня есть поиск логинов по memo как это сделать через БД?