Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка 
:(
    Опции темы
Gigabyte
Дата 19.4.2006, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Студент-халявщик
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 1.11.2004
Где: ПЫтер

Репутация: нет
Всего: 3



я написал во такой код
Код

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    OpenPictureDialog1: TOpenPictureDialog;
    Button2: TButton;
    SavePictureDialog1: TSavePictureDialog;
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

Type
  TRGB=record
  b,g,r : byte;
  end;

    ARGB=array [0..1] of TRGB;
    PARGB=^ARGB;
    PRGB = ^TRGB;

var
  Form1: TForm1;

implementation

{$R *.dfm}
var
inimg,in3d,temp,outb:tbitmap;

step:real;

procedure LayeredDraw(x,y : integer; S,D : TBitmap; Layered : Integer);
var
  i,j : integer;
  p1,p2 : PARGB;
begin
 for i:=0 to S.Height-1 do
 begin
  p1:=S.ScanLine[i];
  p2:=D.ScanLine[i+x];
  for j:=0 to S.Width-1 do
  begin
   p2[j+y].r:=Round(p2[j+y].r*(1-Layered/255)+p1[j].r*Layered/255);
   p2[j+y].g:=Round(p2[j+y].g*(1-Layered/255)+p1[j].g*Layered/255);
   p2[j+y].b:=Round(p2[j+y].b*(1-Layered/255)+p1[j].b*Layered/255);
  end;
 end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
step:=0.5;
outb:=tbitmap.Create;
temp:=tbitmap.Create;
inimg:=tbitmap.Create;
in3d:=tbitmap.Create;


end;

procedure TForm1.Button2Click(Sender: TObject);
var i,j:integer;

begin

if openpicturedialog1.Execute then begin
inimg.LoadFromFile(openpicturedialog1.FileName);

if openpicturedialog1.Execute then begin
in3d.LoadFromFile(openpicturedialog1.FileName);

for i:=1 to in3d.Width do begin
for j:=1 to in3d.Height do begin
temp.Canvas.Pixels[i,j]:=stringtocolor('00'+inttostr(getgvalue(inimg.Canvas.Pixels[i,j]))+inttostr(getbvalue(inimg.Canvas.Pixels[i,j])));
LayeredDraw(-round(step*getrvalue(in3d.Canvas.Pixels[i,j])),0,temp,outb,128);
temp.Canvas.Pixels[i,j]:=stringtocolor(inttostr(getrvalue(inimg.Canvas.Pixels[i,j]))+'0000');
LayeredDraw(0,0,temp,outb,128);
end;
end;




if SavePictureDialog1.Execute then outb.SaveToFile(SavePictureDialog1.FileName);
end;
end;
end;

end.


но после его выполнения получается пустой BMP
в чем ошибка
inimg-исходное изображение
in3d - черно-белое изображение обЪема
 


--------------------

user posted image
user posted image
PM MAIL ICQ   Вверх
Snowy
Дата 19.4.2006, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 18
Всего: 484



Модератор: Название темы должно отражать ее суть!

Код

// .....
  in3d.LoadFromFile(openpicturedialog1.FileName);
  temp.Width := in3d.Width;
  temp.Height := in3d.Height;
 
PM MAIL   Вверх
Gigabyte
Дата 19.4.2006, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Студент-халявщик
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 1.11.2004
Где: ПЫтер

Репутация: нет
Всего: 3



теперь вообще ничего не выдает
пишит ошибку и всё 


--------------------

user posted image
user posted image
PM MAIL ICQ   Вверх
Snowy
Дата 19.4.2006, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 18
Всего: 484



Это потому что ты вылезаешь за границы ScanLines.
Причем совершенно не понятно что этот код должен делать.
Зачем ты засовываешь цвет в координату? Так ты при любом размере изображения выйдешь за границы.
Размеры outb также не заданы.
В этом коде столько ошибок, что он никогда не будет работать. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0472 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.