Текущий архив: 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